如何在Python脚本返回错误码1时让GitLab CI流水线失败?
解决GitLab CI在Python脚本返回1时不失败的问题
问题核心是你的Python脚本仅打印了检查结果的数字,但未将该值作为进程退出码返回给系统。GitLab CI依据命令的退出码判断阶段成败:0代表成功,非0代表失败,而Python脚本默认退出码为0,所以即便打印了1,CI仍会判定任务成功。
方法一:修改Python脚本返回正确退出码
在脚本末尾添加sys.exit(),将检查结果作为进程退出码返回:
import sys word = "test" def check(): with open("tex.txt", "r") as file: for line_number, line in enumerate(file, start=1): if word in line: return 0 return 1 is_word_found = check() print(is_word_found) sys.exit(is_word_found) # 让Python进程以检查结果作为退出码
当脚本返回1时,Python进程的退出码即为1,GitLab CI会识别这个非0值,直接标记该阶段失败。
方法二:在GitLab CI配置中判断输出并手动退出
若不想修改Python脚本,可在CI的script步骤中捕获脚本输出,再根据输出值手动退出:
image: davidlor/python-git-app:latest stages: - Test Test_stage: tags: - docker stage: Test script: - echo "test stage started" - result=$(python verify.py) - echo "检查结果:$result" - exit $result
该方式通过$(python verify.py)捕获脚本打印的输出,再用exit $result让Shell进程以该值作为退出码,同样能触发CI阶段失败。
内容的提问来源于stack exchange,提问作者PforPython
相关产品推荐
相关产品推荐

