jenkins - Jenkins 并行作业 - 如果至少有一个成功(如 successFast)触发另一个作业 - 不要等待所有作业的结果
问题描述
我能够使用并行语法运行并行 Jenkins 作业,并且能够使用 wait: true 和propagate: false 来获取每个子作业的结果。
例子 -
pipeline {
stages {
stage('Parallel Jobs'){
steps{
script{
def result = parallel(
"JobAKey":{
build job: "job-A", wait: true, propagate: false, parameters: [string(name: 'param1', value: val1)]
},
"JobBKey":{
build job: "job-B", wait: true, propagate: false, parameters: [string(name: 'param1', value: val1)]
}
)
print(result['JobAKey'].result)
print(result['JobBKey'].result)
if (result['JobAKey'].result == 'SUCCESS' || result['JobBKey'].result == 'SUCCESS') {
build job: "job-C", wait: false, parameters: [string(name: 'param2', value: val2)]
build job: "job-D", wait: false, parameters: [string(name: 'param2', value: val2))]
}
}
}
}
}
}
如果一个作业作业-A 或作业-B 中的任何一个返回成功,我想运行作业-C 和作业-D。如果作业-B 快速返回成功,那么我不想等待作业-A 完成(成功/失败),反之亦然。我不知道哪个工作会很快完成并返回 SUCCESS。
使用“wait: True”,并行等待两个作业完成,然后启动作业-C 和作业-D。
有没有类似successFast(如failFast)的东西?
条件是,并行作业列表中的任何一个作业都应该在完成时返回 SUCCESS,以便我们可以开始下一个作业(作业-C 和作业-D)。
提前致谢!
解决方案
推荐阅读
- python - 使用 Pandas to_html 时如何设置字符集?
- java - 为什么 count 变量必须在 for 循环的大括号外定义?
- c# - 如何在静态类中使用泛型
- android - 我收到一条错误消息:“无法解析对‘System.Drawing.Color’的引用(在程序集‘Acr.UserDialogs.Interface’中定义’”
- javascript - 文件阅读器第一次没有加载 - VUE.JS
- haskell - 如何使用 Spock 和 Lucid 提供静态文件?
- html - HTML中的img标签不显示任何内容
- sockets - 如何在 Python 中打开 openssl s_client 套接字
- php - 订阅身份验证数据中的密钥无效,类型:websocketError
- ios - 使用 CoreBlueTooth L2CAP 通道传输音频文件