Advertisement
Guest User

Untitled

a guest
Apr 2nd, 2020
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.51 KB | None | 0 0
  1. @Library("helpers")
  2. import org.jenkinsci.plugins.workflow.steps.FlowInterruptedException
  3. import org.acronis.helpers.etcd.EtcdBuilder
  4. import org.acronis.helpers.mspci.AnsibleDeploy
  5. import org.acronis.helpers.ovirt.oVirtSettings
  6. import org.acronis.helpers.vztools.SnapshotToolManager
  7. import net.sf.json.JSONNull
  8. import Utils
  9.  
  10. def abortJenkinsJob(String jobUrl) {
  11. withCredentials([usernamePassword(credentialsId: 'sadogit_userpass', usernameVariable: 'USERNAME', passwordVariable: 'PASSWORD')]) {
  12. sh "curl -sS -k -u '${USERNAME}:${PASSWORD}' -X POST '${jobUrl}'stop"
  13. }
  14. }
  15.  
  16. def getJenkinsJobByFilter(Map conditions) {
  17. List jobUrlList = []
  18.  
  19. withCredentials([usernamePassword(credentialsId: 'sadogit_userpass', usernameVariable: 'USERNAME', passwordVariable: 'PASSWORD')]) {
  20. def out = sh(returnStdout: true, script: "curl -sS -k -u '${USERNAME}:${PASSWORD}' -g\
  21. -X GET '${JOB_URL}api/json?pretty=true&depth=2&tree=builds[id,displayName,url,building,result,actions[parameters[name,value]]]' \
  22. -H 'Content-type: application/json'").trim()
  23. def parsed = readJSON text: out
  24.  
  25. for (i = 0; i < parsed.builds.size(); i++) {
  26. if (parsed.builds[i].building == parameters.status && parsed.builds[i].displayName) {
  27. for (j = 0; j < parsed.builds[i].actions.parameters.size(); j++) {
  28. if (parsed.builds[i].actions.parameters[j].toString() != 'null') {
  29. for (k = 0; k < parsed.builds[i].actions.parameters[j].size(); k++) {
  30. if (parsed.builds[i].actions.parameters[j][k].name == conditions.parameters.keySet() && parsed.builds[i].actions.parameters[j][k].value ==) {
  31. jobUrlList.add(parsed.builds[i].url)
  32. }
  33. }
  34. }
  35. }
  36. }
  37.  
  38. if ( parsed.builds[i].building && parsed.builds[i].displayName != 'Update MSP' && parsed.builds[i].id != BUILD_NUMBER ) {
  39. }
  40.  
  41. if ( !(parsed.builds[i].building) && parsed.builds[i].result == 'SUCCESS') {
  42. if ( parsed.builds[i].actions.parameters[j][k].name == 'COMMIT_HASH' && parsed.builds[i].actions.parameters[j][k].value == commit_hash ) {
  43. previousSuccessBuildwithSameCommitHash = true
  44. }
  45. }
  46. }
  47.  
  48. return jobUrlList
  49. }
  50. }
  51.  
  52. // drop if duplicate
  53. Map conditions = ['parameters':['COMMIT_HASH': COMMIT_HASH], 'status': 'SUCCESS']
  54. if !(getJenkinsJobByFilter(parameters).isEmpty()) {
  55. // no sense to continue
  56. return
  57. }
  58.  
  59. // cleanup queue
  60. conditions = ['parameters':['PULL_REQUEST_ID':'12345'], 'isRunning': true]
  61. getJenkinsJobByFilter(parameters).each {abortJenkinsJob(it.url)}
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69. node('backup-manager-tam-e2e') {
  70. cleanWs()
  71.  
  72. def prUrl = "https://git.acronis.com/projects/${PROJECT}/repos/${REPOSITORY}/pull-requests/${PULL_REQUEST_ID}/overview"
  73. currentBuild.description = "<a href=$prUrl>PR: ${PULL_REQUEST_ID}</a>"
  74.  
  75. def buildFlag = true
  76.  
  77. stage ('Pre build check') {
  78. if ( isTherePreviousSuccessBuild(PULL_REQUEST_ID, COMMIT_HASH) ) {
  79. buildFlag = false
  80. return
  81. }
  82. buildFlag = isPrHasToBeTested(PROJECT, REPOSITORY, PULL_REQUEST_ID)
  83. }
  84.  
  85. if (!buildFlag) {
  86. println "Either all changes do not affect functionality or there is successful build with same commit hash.\nExiting..."
  87. return
  88. }
  89.  
  90. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement