Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @Library("helpers")
- import org.jenkinsci.plugins.workflow.steps.FlowInterruptedException
- import org.acronis.helpers.etcd.EtcdBuilder
- import org.acronis.helpers.mspci.AnsibleDeploy
- import org.acronis.helpers.ovirt.oVirtSettings
- import org.acronis.helpers.vztools.SnapshotToolManager
- import net.sf.json.JSONNull
- import Utils
- def abortJenkinsJob(String jobUrl) {
- withCredentials([usernamePassword(credentialsId: 'sadogit_userpass', usernameVariable: 'USERNAME', passwordVariable: 'PASSWORD')]) {
- sh "curl -sS -k -u '${USERNAME}:${PASSWORD}' -X POST '${jobUrl}'stop"
- }
- }
- def getJenkinsJobByFilter(Map conditions) {
- List jobUrlList = []
- withCredentials([usernamePassword(credentialsId: 'sadogit_userpass', usernameVariable: 'USERNAME', passwordVariable: 'PASSWORD')]) {
- def out = sh(returnStdout: true, script: "curl -sS -k -u '${USERNAME}:${PASSWORD}' -g\
- -X GET '${JOB_URL}api/json?pretty=true&depth=2&tree=builds[id,displayName,url,building,result,actions[parameters[name,value]]]' \
- -H 'Content-type: application/json'").trim()
- def parsed = readJSON text: out
- for (i = 0; i < parsed.builds.size(); i++) {
- if (parsed.builds[i].building == parameters.status && parsed.builds[i].displayName) {
- for (j = 0; j < parsed.builds[i].actions.parameters.size(); j++) {
- if (parsed.builds[i].actions.parameters[j].toString() != 'null') {
- for (k = 0; k < parsed.builds[i].actions.parameters[j].size(); k++) {
- if (parsed.builds[i].actions.parameters[j][k].name == conditions.parameters.keySet() && parsed.builds[i].actions.parameters[j][k].value ==) {
- jobUrlList.add(parsed.builds[i].url)
- }
- }
- }
- }
- }
- if ( parsed.builds[i].building && parsed.builds[i].displayName != 'Update MSP' && parsed.builds[i].id != BUILD_NUMBER ) {
- }
- if ( !(parsed.builds[i].building) && parsed.builds[i].result == 'SUCCESS') {
- if ( parsed.builds[i].actions.parameters[j][k].name == 'COMMIT_HASH' && parsed.builds[i].actions.parameters[j][k].value == commit_hash ) {
- previousSuccessBuildwithSameCommitHash = true
- }
- }
- }
- return jobUrlList
- }
- }
- // drop if duplicate
- Map conditions = ['parameters':['COMMIT_HASH': COMMIT_HASH], 'status': 'SUCCESS']
- if !(getJenkinsJobByFilter(parameters).isEmpty()) {
- // no sense to continue
- return
- }
- // cleanup queue
- conditions = ['parameters':['PULL_REQUEST_ID':'12345'], 'isRunning': true]
- getJenkinsJobByFilter(parameters).each {abortJenkinsJob(it.url)}
- node('backup-manager-tam-e2e') {
- cleanWs()
- def prUrl = "https://git.acronis.com/projects/${PROJECT}/repos/${REPOSITORY}/pull-requests/${PULL_REQUEST_ID}/overview"
- currentBuild.description = "<a href=$prUrl>PR: ${PULL_REQUEST_ID}</a>"
- def buildFlag = true
- stage ('Pre build check') {
- if ( isTherePreviousSuccessBuild(PULL_REQUEST_ID, COMMIT_HASH) ) {
- buildFlag = false
- return
- }
- buildFlag = isPrHasToBeTested(PROJECT, REPOSITORY, PULL_REQUEST_ID)
- }
- if (!buildFlag) {
- println "Either all changes do not affect functionality or there is successful build with same commit hash.\nExiting..."
- return
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement