【发布时间】:2017-06-02 12:22:30
【问题描述】:
我有一个 python 脚本在 Jenkins 的构建阶段运行,在执行 shell 区域中。
问题是如果脚本失败,我仍然认为构建成功。我确实检查并且python使用了类似于shell命令的返回码(你用$调用的那个?),虽然我不知道在哪里调用在python脚本中触发“任何”失败返回码
import sys
..... code here
....functions
sys.exit(-1)
我需要返回 sys.exit(-1),但是你把它放在 python 代码的什么地方呢?到目前为止,我只能使用 try 块来处理它,并且在异常部分我放置了 sys.exit(-1),但这会添加很多代码,因为我在脚本中有很多函数。
是否有我可以使用的全局位置来触发故障,因此 Jenkins 作业失败?
【问题讨论】:
-
我记得有一个类似的问题。可能如果你的函数中的某些东西失败了,它永远不会到达
sys.exit()部分。对于初学者,您可以使用main() function之类的东西,其中所有逻辑都包装在一起。然后添加if __name__ == "__main__":部分并执行sys.exit(main())之类的操作,然后这将传播错误。我想这就是我当时解决它的方法 -
如果其中一个 shell 块执行非零,则构建将失败,因此问题在于您的 python 脚本没有传播错误。您可以通过运行 python 脚本并直接回显
$?来检查这一点 -
使用
sys.exit(-1)有什么理由吗?可以使用sys.exit(1)吗。 -
不再重复;我不是在问如何触发失败;我在问如何在我的脚本中实现 sys.exit;这是完全不同的。