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

Jenkins Pipeline的for循环内命令失败如何让循环继续?CatchError是否适用?

Jenkins Pipeline循环内步骤失败不中断执行方案

核心问题结论

使用catchError包裹循环内的Maven执行步骤,不会直接跳转到下一个stage,完全可以让for循环继续处理剩余的取值。

原理说明

catchError是Jenkins Pipeline内置的错误捕获步骤,默认行为如下:

  • 仅捕获包裹范围内的执行异常,不会中断整个流程的后续执行
  • 步骤执行失败时,默认将本次构建的整体状态标记为FAILURE(可通过参数修改该行为)
  • 执行完catchError块后,会继续执行块后的代码,也就是for循环的下一次迭代

修改后的代码示例

stages {
    stage('Stage1: Exec') {
        agent {
            label 'master'
        }
        steps {
            dir("/opt/exec/") {
                script {     
                    item = params.keys
                    values = item.split(",") // 注:原代码中keys(",")应为split(",")笔误
                    for (String value: values) { 
                        // 用catchError包裹可能失败的bat步骤即可
                        catchError {
                            bat "//run a maven command for ${value}" 
                        }
                        // 此处可扩展自定义逻辑,比如记录当前value的执行结果
                    }
                }
            }
        }
    }
}

可选配置说明

如果不需要单个Maven命令失败就把整个构建标记为失败,可以调整catchError的参数:

// 单个步骤失败仅将当前Stage标记为不稳定,不影响整体构建状态
catchError(buildResult: 'SUCCESS', stageResult: 'UNSTABLE') {
    bat "//run a maven command for ${value}" 
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 07:09:00