jenkins解決構建完成后自動殺死進程的問題(兩種解決方案)
1. 問題描述
筆者想通過Jenkins拉取gitlab的項目代碼,進行構建后,將web項目的war包部署到Tomcat上
部署war包采用Tomcat重啟的方式 post_steps里邊如下
cp /var/lib/jenkins/workspace/kgcweb/target/kgcweb.war /usr/local/tomcat/webapps/
/usr/local/tomcat/bin/shutdown.sh
/usr/local/tomcat/bin/startup.sh
查看Jenkins的構建日志 沒有任何異常 如下
但是訪問對應的web時報錯403
2. 方法一:通過在post_steps里寫BUILD_ID解決殺進程問題
原理:
jenkins默認會在構建完成后殺掉構建過程中又jenkins中shell命令觸發的衍生進程。jenkins根據BUILD_ID識別某個進程是否為構建過程的衍生進程,故修改BUILD_ID后,jenkins就無法識別是否為衍生進程,則此進程能在后台保留運行
修改post_steps如下
OLD_BUILD_ID=$BUILD_ID
echo $OLD_BUILD_ID
BUILD_ID=dontKillMe
cp /var/lib/jenkins/workspace/kgcweb/target/kgcweb.war /usr/local/tomcat/webapps/
/usr/local/tomcat/bin/shutdown.sh
/usr/local/tomcat/bin/startup.sh
任務構建成功之后 可以成功訪問到頁面
3. 方法二:修改Jenkins運行用戶,其他的都不需要修改
[root@localhost ~]# vim /etc/sysconfig/jenkins
29 JENKINS_USER="jenkins"
[root@localhost ~]# systemctl restart jenkins
還是按照相同的方式運行Jenkins任務,問題成功解決