Python 让詹金斯的工作失败

Python 让詹金斯的工作失败,python,jenkins,Python,Jenkins,这个问题听起来可能很奇怪,但我如何才能让工作失败呢 我有一个python脚本,它使用SCON编译了一些文件,并作为jenkins作业运行。该脚本测试编译器是否可以生成x64或x86二进制文件,我希望作业在无法执行其中一项操作时失败 例如:如果我在64位系统上运行脚本,但它无法编译64位。脚本中是否有可能导致失败的操作?您可以在任何时候引发异常。如果未经处理,应用程序将停止。您甚至不需要指定要引发的异常 if not yourTestHere: raise 如果要指定消息,只需引发标准异

这个问题听起来可能很奇怪,但我如何才能让工作失败呢

我有一个python脚本,它使用SCON编译了一些文件,并作为jenkins作业运行。该脚本测试编译器是否可以生成x64或x86二进制文件,我希望作业在无法执行其中一项操作时失败


例如:如果我在64位系统上运行脚本,但它无法编译64位。脚本中是否有可能导致失败的操作?

您可以在任何时候引发异常。如果未经处理,应用程序将停止。您甚至不需要指定要引发的异常

if not yourTestHere:
    raise
如果要指定消息,只需引发标准异常即可

from exceptions import Exception
if not yourTestHere:
    raise Exception("Script failed because of bla bla bla")

如果脚本以非零状态退出,则生成应该失败

import sys
sys.exit(-1)

重要的是,运行python脚本是jenkins作业的最后一步,当它抛出异常或非零异常代码时。 如果在此之后运行任何其他操作,即使echo“我的工作完成了”也会更改错误代码

对我来说,以下是我的詹金斯工作失败的原因

当我做以下工作时,我的詹金斯工作显示出成功


我正是这样做的,但是我的构建仍然“成功”,就詹金斯而言。你知道为什么吗?@Answoquest我也有同样的问题,你知道那是什么吗?对不起,我真的记不起来了。我很确定上面的解决方案是有效的,但我做了一些愚蠢的事情。抱歉,我帮不上什么忙了:/I我做了与退出(1)相同的操作,但我的构建仍然成功。注意:我认为“使python以非零状态退出”并不能解决这个问题。。。至少在我的情况下,问题是“为什么这不会让詹金斯的工作失败?”
echo "exit(1)" >> test.py
python test.py
echo "exit(1)" >> test.py
python test.py
echo "This changes my exit code back to 0, which is successful"