jenkins中shell脚本执行失败,但构建结果仍然显示success的问题
jenkins 判断构建操作执行成功了还是失败可以通过返回0或1的结果。成功的话,返回0;不成功返回1.比如shell脚本,通过if判断某个条件,最后,成功:exit 0;不成功:exit 1
·
jenkins 判断构建操作执行成功了还是失败
- 可以通过返回0或1的结果。成功的话,返回0;不成功返回1.
- 比如shell脚本,通过if判断某个条件,最后,
成功:exit 0
;不成功:exit 1
python -u ./jenkins_run_test.py -i ${Random}
if [ $? -eq 0 ]; then ## $? 是shell 上一条命令的返回值,如果执行成功,退出码是 0,如果失败,退出码是 非0
echo "The Job Excute Success........"
else
echo "The Job Excute Failed........."
exit 1
fi
- 但是我在进行如上操作之后,依旧会出现 shell 脚本失败,并且报错,但是构建依旧成功,这时候,就需要去检查你的原生的python 脚本,是不是进行了容错性处理,比如捕捉信号,或者使用进程去跑,我的python代码执行如下:
def signal_handler(signum, frame):
log.info('=== enter func : [signal_handler] ')
log.info('=== signal : {}'.format(signum))
if signum == signal.SIGHUP:
log.warning('=== WARN : Ignore SIGHUP ...')
return
try:
pool.terminate() ##
pool.join()
finally:
exit(0)
def worker_run():
print('=== Start worker')
worker = test_worker(settings, all_dev)
worker.start()
p = Process(target = worker_run, args = ())
p.start()
p.join()
改动之后的代码:
def worker_run():
print('=== Start worker')
worker = test_worker(settings, all_dev)
worker.start()
worker_run()
## p = Process(target = worker_run, args = ())
## p.start()
## p.join()
在改动之后,如果python 脚本执行出错,构建就会同步,出现failtrue.
更多推荐
已为社区贡献1条内容
所有评论(0)