记一次jenkins自动构建python程序遇到的坑

事出有因:

  • 后台写的python程序要发布到服务器上
  • 需要自动发布
  • 然后如往常般一顿配置下来
  • jenkins的控制台也输出了’SUCCESS’
  • 然后开心的前往服务器查看进程运行状态时
  • 神奇的事情就发生了。。。

如图:
在这里插入图片描述
可以看到jenkins的结果是成功的,并且启动程序的命令也执行了,但是服务器上并没有见到该进程。

接下来就是各种排查+试错,都依然无果
只能冷静下来,寻找命令参数,把debug日志调出来进行查看

# 输出debug日志
gunicorn -w 2 -b 0.0.0.0:9999 --log-level=debug --error-logfile /var/log/g_error.log run:app -D

刚开始查看日志没多细心,加上也比较烦心。
开关几遍日志后发现了个小小的线索,如图:
在这里插入图片描述
这里可以看到python程序接收到了一个信息,然后worker就退出,master进程最后关闭。
然后就是思考时间:
谁给python程序发送的消息 ----> jenkins
怎么让jenkins不发消息到python进程

然后就有了如图的参数:
在这里插入图片描述
在jenkins的这里面找到:
在这里插入图片描述
然后豁然大悟的在脚本里添加这样的字段:

# 在启动python程序前加入 BUILD_ID=DONTKILLME,翻译过来就是don't kill me
BUILD_ID=DONTKILLME
gunicorn -w 2 -b 0.0.0.0:9999 run:app -D

然后构建一次项目,完美!

总结:

  • jenkins默认会在构建完成后杀掉构建过程中用jenkins中shell命令触发的衍生进程;
  • jenkins根据BUILD_ID识别某个进程是否为构建过程的衍生进程;
  • 通过 'BUILD_ID=DONTKILLME ’ 参数告诉jenkins,别杀掉我;
  • jenkins就会避开这个进程完成任务
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值