You need to enable JavaScript to run this app. Jenkins Pipeline单stage失败时如何继续执行且保留失败标记
优惠活动
大模型
产品
解决方案
定价
更多

Jenkins Pipeline单stage失败时如何继续执行且保留失败标记

Jenkins Pipeline多阶段独立执行解决方案

需求说明

单个stage失败时不终止整个Pipeline运行,同时失败的stage保留失败状态,不会被误标记为成功。

可直接使用的修改后脚本

方案1:通过build返回结果手动判断

def map = [FRA1: "192.168.1.1", DEL: "192.168.1.2", NYC: "192.168.1.3"]
map.each { key, value ->
    echo "${key} ${value}"
    stage("job test-${key}"){           
       def buildResult = build job: 'jobcheck', parameters: [string(name: 'DC-NAME',value: "${value}")], propagate: false
       if(buildResult.result == 'FAILURE') {
           error("${key} 对应检查任务执行失败")
       }
    }
}

方案说明

  • 给build步骤添加propagate: false参数,子任务失败时不会直接抛出异常中断全局流水线,会返回子任务的执行结果对象
  • 手动判断返回结果的状态,失败时调用error方法,即可将当前stage标记为失败,不影响后续其他stage的执行

方案2:通过catchError实现

def map = [FRA1: "192.168.1.1", DEL: "192.168.1.2", NYC: "192.168.1.3"]
map.each { key, value ->
    echo "${key} ${value}"
    stage("job test-${key}"){
       catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
           build job: 'jobcheck', parameters: [string(name: 'DC-NAME',value: "${value}")]
       }
    }
}

方案说明

  • catchError会自动捕获当前代码块内的所有异常,按照配置将当前stage和构建结果标记为对应状态,同时继续执行后续代码
  • 可以根据需求调整buildResult和stageResult的参数值,比如设置为UNSTABLE将状态标记为不稳定

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 11:03:03