Module: DTK::Client::JenkinsClient::ConfigXML

Defined in:
lib/command_helpers/jenkins_client/config_xml.rb

Constant Summary collapse

ConfigXMLTemplateServiceModule =
Erubis::Eruby.new "<?xml version='1.0' encoding='UTF-8'?>\n<project>\n  <actions/>\n  <description></description>\n  <keepDependencies>false</keepDependencies>\n  <properties>\n    <com.gmail.ikeike443.PlayAutoTestJobProperty/>\n  </properties>\n  <scm class=\"hudson.plugins.git.GitSCM\">\n    <configVersion>2</configVersion>\n    <userRemoteConfigs>\n      <hudson.plugins.git.UserRemoteConfig>\n        <name></name>\n        <refspec></refspec>\n        <url><%= repo_url %></url>\n      </hudson.plugins.git.UserRemoteConfig>\n    </userRemoteConfigs>\n    <branches>\n      <hudson.plugins.git.BranchSpec>\n        <name>**</name>\n      </hudson.plugins.git.BranchSpec>\n    </branches>\n    <disableSubmodules>false</disableSubmodules>\n    <recursiveSubmodules>false</recursiveSubmodules>\n    <doGenerateSubmoduleConfigurations>false</doGenerateSubmoduleConfigurations>\n    <authorOrCommitter>false</authorOrCommitter>\n    <clean>false</clean>\n    <wipeOutWorkspace>false</wipeOutWorkspace>\n    <pruneBranches>false</pruneBranches>\n    <remotePoll>false</remotePoll>\n    <ignoreNotifyCommit>false</ignoreNotifyCommit>\n    <buildChooser class=\"hudson.plugins.git.util.DefaultBuildChooser\"/>\n    <gitTool>Default</gitTool>\n    <submoduleCfg class=\"list\"/>\n    <relativeTargetDir></relativeTargetDir>\n    <reference></reference>\n    <excludedRegions></excludedRegions>\n    <excludedUsers></excludedUsers>\n    <gitConfigName></gitConfigName>\n    <gitConfigEmail></gitConfigEmail>\n    <skipTag>false</skipTag>\n    <includedRegions></includedRegions>\n    <scmName></scmName>\n </scm>\n  <canRoam>true</canRoam>\n  <disabled>false</disabled>\n  <blockBuildWhenDownstreamBuilding>false</blockBuildWhenDownstreamBuilding>\n  <blockBuildWhenUpstreamBuilding>false</blockBuildWhenUpstreamBuilding>\n  <triggers class=\"vector\"/>\n  <concurrentBuild>false</concurrentBuild>\n  <builders>\n    <hudson.tasks.Shell>\n      <command>ruby /var/lib/jenkins/r8_e2e.rb</command>\n    </hudson.tasks.Shell>\n  </builders>\n    <publishers>\n    <hudson.plugins.emailext.ExtendedEmailPublisher>\n      <recipientList>$DEFAULT_RECIPIENTS</recipientList>\n      <configuredTriggers>\n        <hudson.plugins.emailext.plugins.trigger.FailureTrigger>\n          <email>\n            <recipientList></recipientList>\n            <subject>$PROJECT_DEFAULT_SUBJECT</subject>\n            <body>$PROJECT_DEFAULT_CONTENT</body>\n            <sendToDevelopers>true</sendToDevelopers>\n            <sendToRequester>false</sendToRequester>\n            <includeCulprits>false</includeCulprits>\n            <sendToRecipientList>true</sendToRecipientList>\n          </email>\n        </hudson.plugins.emailext.plugins.trigger.FailureTrigger>\n        <hudson.plugins.emailext.plugins.trigger.StillFailingTrigger>\n          <email>\n            <recipientList></recipientList>\n            <subject>$PROJECT_DEFAULT_SUBJECT</subject>\n            <body>$PROJECT_DEFAULT_CONTENT</body>\n            <sendToDevelopers>true</sendToDevelopers>\n            <sendToRequester>false</sendToRequester>\n            <includeCulprits>false</includeCulprits>\n            <sendToRecipientList>false</sendToRecipientList>\n          </email>\n        </hudson.plugins.emailext.plugins.trigger.StillFailingTrigger>\n        <hudson.plugins.emailext.plugins.trigger.FixedTrigger>\n          <email>\n            <recipientList></recipientList>\n            <subject>$PROJECT_DEFAULT_SUBJECT</subject>\n            <body>$PROJECT_DEFAULT_CONTENT</body>\n            <sendToDevelopers>true</sendToDevelopers>\n            <sendToRequester>false</sendToRequester>\n            <includeCulprits>false</includeCulprits>\n            <sendToRecipientList>true</sendToRecipientList>\n          </email>\n        </hudson.plugins.emailext.plugins.trigger.FixedTrigger>\n      </configuredTriggers>\n      <contentType>default</contentType>\n      <defaultSubject>$DEFAULT_SUBJECT</defaultSubject>\n      <defaultContent>${JELLY_SCRIPT,template=&quot;html&quot;}</defaultContent>\n      <attachmentsPattern></attachmentsPattern>\n    </hudson.plugins.emailext.ExtendedEmailPublisher>\n  </publishers>\n  <buildWrappers/>\n</project>\n"
ConfigXMLTemplateAssembly =
Erubis::Eruby.new "<?xml version='1.0' encoding='UTF-8'?>\n<project>\n  <actions/>\n  <description></description>\n  <keepDependencies>false</keepDependencies>\n  <properties>\n    <com.gmail.ikeike443.PlayAutoTestJobProperty/>\n  </properties>\n  <scm class=\"hudson.scm.NullSCM\"/>\n  <canRoam>true</canRoam>\n  <disabled>false</disabled>\n  <blockBuildWhenDownstreamBuilding>false</blockBuildWhenDownstreamBuilding>\n  <blockBuildWhenUpstreamBuilding>false</blockBuildWhenUpstreamBuilding>\n  <triggers class=\"vector\"/>\n  <concurrentBuild>false</concurrentBuild>\n  <builders>\n    <hudson.tasks.Shell>\n      <command>#!/usr/bin/env ruby\n\nrequire &apos;rubygems&apos;\nrequire &apos;rest_client&apos;\nrequire &apos;pp&apos;\nrequire &apos;json&apos;\n\nSTDOUT.sync = true\n\nENDPOINT = &apos;http://ec2-54-247-191-95.eu-west-1.compute.amazonaws.com:7000&apos;\nASSEMBLY_ID = &apos;<%= assembly_id %>&apos;\n\n# controling &apos;pretty-print&apos; in log file\nJSON_OUTPUT_ENABLED = false\n\n# Method for deleting assembly instances\ndef deleteAssembly(assemblyId)\n  responseAssemblyDelete = RestClient.post(ENDPOINT + &apos;/rest/assembly/delete&apos;, &apos;assembly_id&apos; =&gt; assemblyId)\n  puts &quot;Assembly has been deleted! Response: \#{responseAssemblyDelete}&quot;\nend\n\n#\n# Method for pretty print of json responses\ndef json_print(json)\n  pp json if JSON_OUTPUT_ENABLED\nend\n\npp &quot;Script has been started!&quot;\n\nputs &quot;Using template ID: \#{ASSEMBLY_ID}&quot; \n\n# Stage the assembly\nstageAssembly = RestClient.post(ENDPOINT + &apos;/rest/assembly/stage&apos;, &apos;assembly_id&apos; =&gt; ASSEMBLY_ID) \nassemblyId = JSON.parse(stageAssembly)[&quot;data&quot;][&quot;assembly_id&quot;]\n\nputs &quot;Using stage assembly ID: \#{assemblyId}&quot; \n\n# Create a task for the cloned assembly instance\nresponseTask = RestClient.post(ENDPOINT + &apos;/rest/assembly/create_task&apos;, &apos;assembly_id&apos; =&gt; assemblyId)\n# Extract task id\ntaskId = JSON.parse(responseTask)[&quot;data&quot;][&quot;task_id&quot;]\n# Execute the task\nputs &quot;Starting task id: \#{taskId}&quot;\nresponseTaskExecute = RestClient.post(ENDPOINT + &apos;/rest/task/execute&apos;, &apos;task_id&apos; =&gt; taskId)\n\ntaskStatus = &apos;executing&apos;\n\nwhile taskStatus.include? &apos;executing&apos;\n  sleep 20\n  responseTaskStatus = RestClient.post(ENDPOINT + &apos;/rest/task/status&apos;, &apos;task_id &apos;=&gt; taskId)\n  taskFullResponse = JSON.parse(responseTaskStatus)\n  taskStatus = taskFullResponse[&quot;data&quot;][&quot;status&quot;]\n  puts &quot;Task status: \#{taskStatus}&quot;\n  json_print JSON.parse(responseTaskStatus)\nend\n\nif taskStatus.include? &apos;fail&apos; \n  # Print error response from the service\n  puts &quot;Smoke test failed, response: &quot;\n  pp taskFullResponse\n  # Delete the cloned assembly&apos;s instance\n  deleteAssembly(assemblyId)\n  abort(&quot;Task with ID \#{taskId} failed!&quot;)\nelse\n  puts &quot;Task with ID \#{taskId} success!&quot;\nend\n\n\n#Create a task for the smoke test\nresponseSmokeTest = RestClient.post(ENDPOINT + &apos;/rest/assembly/create_smoketests_task&apos;, &apos;assembly_id&apos; =&gt; assemblyId)\njson_print responseSmokeTest\n\n#Extract task id\nsmokeTestId = JSON.parse(responseSmokeTest)[&quot;data&quot;][&quot;task_id&quot;]\nputs &quot;Created smoke test task with ID: \#{smokeTestId}&quot;\n#Execute the task\nresponseSmokeExecute = RestClient.post(ENDPOINT + &apos;/rest/task/execute&apos;, &apos;task_id&apos; =&gt; smokeTestId)\n\njson_print JSON.parse(responseSmokeExecute)\n\nputs &quot;Starting smoke test task with ID: \#{smokeTestId}&quot;\n\nsmokeStatus = &apos;executing&apos;\n\nwhile smokeStatus.include? &apos;executing&apos;\n  sleep 20\n  responseSmokeStatus = RestClient.post(ENDPOINT + &apos;/rest/task/status&apos;, &apos;task_id &apos;=&gt; smokeTestId)\n  fullResponse = JSON.parse(responseSmokeStatus)\n  smokeStatus = fullResponse[&quot;data&quot;][&quot;status&quot;]\n  puts &quot;Smoke test status: \#{smokeStatus}&quot;\nend\n\nif smokeStatus.include? &apos;failed&apos;\n  # Delete the cloned assembly&apos;s instance\n  puts &quot;Smoke test failed, response: &quot;\n  pp fullResponse\n\n  # Getting log files for failed jobs\n  task_log_response = RestClient.post(ENDPOINT + &apos;/rest/task/get_logs&apos;, &apos;task_id &apos;=&gt; smokeTestId)\n  puts &quot;Logs response:&quot;  \n  pp JSON.parse(task_log_response)\n\n  deleteAssembly(assemblyId)\n  abort(&quot;Smoke test failed.&quot;) \nend\n\n# Delete the cloned assembly&apos;s instance, this is the must!\n#deleteAssembly(assemblyId)\n\n#abort(&quot;Testing failure mail report.&quot;)\n</command>\n    </hudson.tasks.Shell>\n  </builders>\n  <publishers>\n    <hudson.tasks.Mailer>\n      <recipients>[email protected]</recipients>\n      <dontNotifyEveryUnstableBuild>false</dontNotifyEveryUnstableBuild>\n      <sendToIndividuals>false</sendToIndividuals>\n    </hudson.tasks.Mailer>\n  </publishers>\n  <buildWrappers/>\n</project>\n"

Class Method Summary collapse

Class Method Details

.generate_assembly_project(assembly_id) ⇒ Object



31
32
33
34
35
36
37
38
# File 'lib/command_helpers/jenkins_client/config_xml.rb', line 31

def self.generate_assembly_project(assembly_id)
  #TODO: not using branch argument
  #TODO: did not put in module_id yet
  template_bindings = {
    :assembly_id => assembly_id
  }
  ConfigXMLTemplateAssembly.result(template_bindings)
end

.generate_service_module_project(repo_url, module_id, branch) ⇒ Object

TODO: this is not working now



23
24
25
26
27
28
29
30
# File 'lib/command_helpers/jenkins_client/config_xml.rb', line 23

def self.generate_service_module_project(repo_url,module_id,branch)
  #TODO: not using branch argument
  #TODO: did not put in module_id yet
  template_bindings = {
    :repo_url => repo_url
  }
  ConfigXMLTemplateServiceModule.result(template_bindings)
end