You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jenkins并行任务如何实现successFast效果:任意成功立即触发下游

解决方案

Jenkins原生parallel语法没有内置的successFast配置,但可以通过线程安全的共享标记结合子任务内的结果判断实现需求,实现逻辑如下:

  • 定义原子布尔类型的标记位,用于记录下游任务是否已经被触发,避免重复执行
  • 每个并行子任务执行完成后立刻校验自身执行结果,只要自身结果为SUCCESS且标记位为未触发状态,就立即启动下游任务并更新标记位
  • 未完成的并行任务会继续执行,不会影响下游任务的启动时机

完整示例代码如下:

pipeline {
    agent any
    stages {
        stage('Parallel Jobs'){
            steps{
                script{
                    // 定义线程安全的触发标记,初始为未触发状态
                    def downstreamTriggered = new java.util.concurrent.atomic.AtomicBoolean(false)
                    
                    parallel(
                        "JobAKey":{
                            def jobAResult = build job: "job-A", wait: true, propagate: false, parameters: [string(name: 'param1', value: val1)]
                            // 原子操作保证即使两个任务同时成功,也仅触发一次下游任务
                            if (jobAResult.result == 'SUCCESS' && downstreamTriggered.compareAndSet(false, true)) {
                                build job: "job-C", wait: false, parameters: [string(name: 'param2', value: val2)]
                                build job: "job-D", wait: false, parameters: [string(name: 'param2', value: val2)]
                            }
                        },
                        "JobBKey":{
                            def jobBResult = build job: "job-B", wait: true, propagate: false, parameters: [string(name: 'param1', value: val1)]
                            if (jobBResult.result == 'SUCCESS' && downstreamTriggered.compareAndSet(false, true)) {
                                build job: "job-C", wait: false, parameters: [string(name: 'param2', value: val2)]
                                build job: "job-D", wait: false, parameters: [string(name: 'param2', value: val2)]
                            }
                        }
                    )
                    // 此处可根据需要追加两个并行任务的最终结果处理逻辑
                }
            }
        }
    }
}

如果不需要继续执行未完成的并行任务,可以在触发下游任务后添加中断其余并行任务的逻辑,进一步节省资源。

内容的提问来源于stack exchange,提问作者Vikas Khengare

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 05:15:04