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

Jenkins如何获取Python脚本的退出码?解决构建状态误判问题

解决Jenkins流水线无法捕获Python脚本退出码的问题

我来帮你搞定这个问题——其实你已经离答案很近了!你当前的流水线之所以会显示SUCCESS,核心原因是用了returnStatus: true参数:这个参数会让sh步骤返回脚本的退出码,但不会主动让流水线失败,Jenkins只会把这个值当成普通返回结果处理,不会自动标记构建失败。

下面给你两种可行的解决方案,你可以根据需求选择:

方案一:捕获退出码并手动触发构建失败

如果你需要先获取退出码做日志输出或其他逻辑判断,再让Jenkins标记构建失败,可以在拿到result后添加判断逻辑,用error指令主动抛出错误:

node { 
    stage('Stage') { 
        def result = sh returnStatus: true, script: 'python3 script.py' 
        echo "RESULT IS $result" 
        // 当退出码非0时,触发构建失败
        if (result != 0) {
            error("Python脚本执行失败,退出码:${result}")
        }
    } 
}

当Python脚本返回2时,这个逻辑会触发error,Jenkins就会把构建状态改成FAILURE,同时在控制台输出你自定义的错误信息。

方案二:让Jenkins自动处理非零退出码

如果你不需要捕获退出码做额外操作,直接去掉returnStatus: true参数即可。默认情况下,sh步骤会检测脚本的退出码,一旦非零就会直接让步骤失败,进而让整个构建标记为FAILURE:

node { 
    stage('Stage') { 
        sh 'python3 script.py' 
    } 
}

这种方式更简洁,适合不需要对退出码做额外处理的场景。

额外注意点

确保Jenkins运行流水线的Shell环境中,python3指向的是你本地测试的那个Python版本——有时候Jenkins的执行环境和你本地终端的环境变量不一致,可能导致脚本执行结果不同。你可以在流水线里先执行which python3和python3 --version来验证环境一致性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:29:11