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

Jenkins Pipeline中if语句使用退出码判断异常问题咨询

Jenkins Pipeline条件判断错误原因及修复

问题根源

你在代码里犯了变量引用的错误:

  • 执行sh步骤后,返回的退出码被赋值给了脚本块内的局部变量EX_CODE,但条件判断时却调用了env.EX_CODE。
  • env是Jenkins的环境变量容器,这个局部变量并没有被注入到环境变量中,所以env.EX_CODE的值为null。
  • 当判断null == 0时,结果为false,代码自然会进入else分支,输出"Code is Bad"。

修复后的代码

直接使用局部变量EX_CODE进行判断即可:

pipeline{
    agent any
    stages{
        stage('Test exitcode'){
            steps{
                script{
                    EX_CODE = sh(
                            script: 'echo hello-world',
                            returnStatus: true
                        )
                    if( EX_CODE == 0 ){
                        echo "Code is good with $EX_CODE"
                    }else{
                        echo "Code is Bad with $EX_CODE"
                    }
                }
            }
        }
    }
}

额外说明

如果需要让这个退出码变量在后续的Pipeline步骤中也能使用,可以将局部变量注入到环境变量中:

script{
    EX_CODE = sh(script: 'echo hello-world', returnStatus: true)
    env.EX_CODE = EX_CODE // 将局部变量转为环境变量
    if( env.EX_CODE == 0 ){
        // ...后续逻辑
    }
}

不过在同一个脚本块内,直接使用局部变量是更简洁高效的方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 12:35:23