jenkins中shell脚本执⾏失败,但构建结果仍然显⽰success的
问题
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 "
else
echo "The Job  ."
exit 1
fi
但是我在进⾏如上操作之后,依旧会出现 shell 脚本失败,并且报错,但是构建依旧成功,这时候,就需要去检查你的原⽣的python 脚本,是不是进⾏了容错性处理,⽐如捕捉信号,或者使⽤进程去跑,我的python代码执⾏如下:
def signal_handler(signum, frame):
log.info('=== enter func :  [signal_handler] ')
log.info('=== signal : {}'.format(signum))shell脚本返回执行结果
if signum == signal.SIGHUP:
log.warning('=== WARN : Ignore SIGHUP ...')
return
try:
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.