詹金斯中止平行阶段

时间:2018-01-29 08:37:49

标签: jenkins jenkins-pipeline

如何从另一个中止一个并行作业?我必须在Jenkins管道中执行并行运行的任务。任务1完成后,任务2也应该完成。这可能吗?

pipeline {
  agent none
  stages {
    stage('Stage A') {
      agent {
        label "winvm01"
      }
      steps {
            script {
                stage('Stage 1') {       

                    def branches = [:]

                    branches["branch_1"] = { 
                         // do some lengthy work
                         echo "branch 1 ended"
                         // abort branch 2 here!!??
                    }

                    branches["branch_2"] = {
                        // to something that only should run while branch_1 is running
                    }
                    parallel branches
                }   
            }
       }
    }
  }
}

1 个答案:

答案 0 :(得分:0)

这样的事情会起作用:

stop = false

parallel 'long': {
    sleep 20
    println "finished long process"
    stop = true
}, 'short': {
    while ( !stop ) {
        println "work"
        sleep 1
    }
    println "stopped by other branch"
}

您还可以让分支1在进程结束时创建一个文件,分支2将检查该文件。

在分支1失败并且永远不会满足停止条件的情况下,为分支2添加超时可能是个好主意。

编辑:忘记failFast: true标志,这是确保其他分支在第一个失败时停止的更好方法。