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

Jenkins流水线阶段返回码1仍通过,需实现失败抛出异常

问题分析与解决方案

你的代码存在两个关键问题,导致无法在命令返回退出码1时让阶段失败:

  1. 默认情况下,Jenkins的sh步骤如果执行的命令返回非0退出码,会直接终止当前步骤,后续的获取退出码、判断逻辑根本不会执行。
  2. 即使sh "$Command"没有终止,sh 'echo $?'返回的是字符串类型的退出码,和数字1比较时会不匹配,判断条件无法触发。

正确实现方式

使用returnStatus: true参数获取命令的退出码,再判断是否为1,若满足则抛出异常标记阶段失败:

stage('Stage A'){
  steps{
    script{
      container('A'){
        // 获取命令的退出码,returnStatus: true 会返回退出码且不终止流水线
        def exitCode = sh script: "$Command", returnStatus: true
        if (exitCode == 1) {
          // 抛出异常,直接标记当前阶段为失败
          error "命令执行返回退出码1,Stage A 失败"
        }
      }
    }
  }
}

关键说明

  • returnStatus: true:这是Jenkins sh步骤的核心参数,作用是让步骤返回命令的退出码数值,而非命令输出,同时不会因命令返回非0退出码而终止流水线,确保后续判断逻辑能执行。
  • error函数:Jenkins内置的异常抛出函数,调用后会立即将当前阶段标记为失败,并终止后续流水线执行,符合你需要的效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 02:35:40