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

含parallel调用的Jenkins流水线阶段状态显示异常原因咨询

Jenkins 2.150.2流水线parallel块导致阶段状态显示异常问题

这是Jenkins的已知bug,不是你的用法错误。

问题原因

在Jenkins 2.150.2版本里,当流水线的stage内部包含parallel调用时,就算你用try-catch捕获了阶段内的异常,这个阶段的状态也没法正确标记为失败:

  • 像示例里的阶段A这种不含parallel的,能正常显示失败状态
  • 而阶段B这种带parallel的,会错误显示成成功——虽然异常确实被捕获了,但状态没同步到阶段上
  • 如果有多个这类带parallel的阶段,前一个阶段会等后一个阶段跑完才显示失败,最后一个阶段因为没后续触发,就一直显示成功

解决办法

  1. 升级Jenkins版本:这个bug在Jenkins 2.164及之后的版本里已经被修复了,升级到稳定版是最彻底的解决方式。
  2. 临时修复方案:
    • 你已经发现的,在最后一个带parallel的阶段后面加个空的parallel块,触发状态更新
    • 改用catchError步骤替代原生的try-catch,它能更好地适配Jenkins的状态管理,保证阶段状态正确同步:
      node {
          catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
              stage("A") {
                  error "E"
              }
          }
          
          catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
              stage("B") {
                  parallel a : {}, b : {}
                  error "E"
              }
          }
      }
      
    或者在原有的catch块里手动标记状态:
    try {
        stage("B") {
            parallel a : {}, b : {}
            error "E"
        }
    } catch(e) {
        currentBuild.result = 'FAILURE'
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 08:32:23