我在执行shell区域的Jenkins构建阶段运行了一个python脚本。
问题是如果脚本失败,我仍然认为构建成功。我确实检查过和python使用的东西类似于shell命令的返回代码(你用$调用的那个?),虽然我无法弄清楚调用哪个地方有"任何" python脚本中的失败触发返回代码
import sys
..... code here
....functions
sys.exit(-1)
我需要返回sys.exit(-1),但是你把它放在python代码中的哪里?到目前为止,我只能使用try块处理它,在异常部分我放了sys.exit(-1),但是这会添加很多代码,因为我在脚本中有很多函数。
我是否可以使用全局位置来触发失败,因此Jenkins作业失败了?
答案 0 :(得分:1)
def main():
try:
do_the_work()
sys.exit(0) # success
except:
# insert code to log and debug the problem
sys.exit(-1)
单词:如果do_the_work
返回,sys.exit(0)
。如果do_the_work
引发了它本身无法处理的任何异常,sys.exit(-1)
。在do_the_work
内,除了成功之外不要返回。在任何不可恢复的错误状态上引发异常,例如
class DoSomethingError( exception)
...
ok = do_something()
if not ok:
print ("do_something error return")
raise DoSomethingError
日志记录和调试:搜索堆栈溢出以获取有关如何从捕获的异常中获取和记录错误回溯的python答案。
答案 1 :(得分:0)