Jenkins 詹金斯流产平行期
如何从一个并行作业中止另一个并行作业?我必须处理Jenkins管道中应该并行运行的任务。一旦任务1完成,任务2也应该完成。可能吗Jenkins 詹金斯流产平行期,jenkins,jenkins-pipeline,Jenkins,Jenkins Pipeline,如何从一个并行作业中止另一个并行作业?我必须处理Jenkins管道中应该并行运行的任务。一旦任务1完成,任务2也应该完成。可能吗 pipeline { agent none stages { stage('Stage A') { agent { label "winvm01" } steps { script { stage('Stage 1') {
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
}
}
}
}
}
}
类似这样的方法会奏效:
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
标志,这是确保其他分支在第一个分支失败时停止的更好方法。failFast:true仅在失败时停止其他阶段,但如果我回忆正确,则不会不成功。这将是很好的,如果它将工作在不成功的也。不过,您的答案的问题是,它假设通常为“println”work“的作业很短,可以在循环中反复运行,等待停止。我认为在OP的问题中,branch_2是一个长时间运行的作业,应该在branch_1停止时停止。