公司要求用jenkins来自动部署nodejs的代码,当我用docker把jenkins和node整合到一起,用jenkins自动构建的时候,我才发现jenkins每次构建完了后要自动杀掉我的node部署shell脚本,网上到处找解决办法,花了三个工作日终于解决问题了.
软件版本:
jenkins 1.651.2
node 5.3.0
docker 1.7.1
解决办法:
1.启动 Jenkins 的时候加上 -Dhudson.util.ProcessTree.disable=true,也就是 java -Dhudson.util.ProcessTree.disable=true -jar jenkins.war
2.在后台进程前加上 BUILD_ID=dontKillMe,也就是 BUILD_ID=dontKillMe nohup npm start >/var/app/nohup.out 2>&1 &
用了上面二个方法后,就解决jenkins自动杀npm进程的问题了.
ps:下面是其他网上找的一些方法,当然能不能解决问题我就不知道了.
1.在execute shell输入框中加入BUILD_ID=DONTKILLME,即可防止jenkins杀死启动的进程
2.临时改变BUILD_ID值,使得jenkins不会找到并结束掉run.sh启动的后台进程
OLD_BUILD_ID=$BUILD_ID
echo $OLD_BUILD_ID
BUILD_ID=dontKillMe
./run.sh restart
#改回原来的BUILD_ID值
BUILD_ID=$OLD_BUILD_ID
echo $BUILD_ID
好了,如果这些方法都不能帮助你解决问题的话,那我还是建议你不要用jenkins了,换个吧.
(责任编辑:IT) |