一、问题描述


jenkins使用publish over ssh,执行shell,没报错,日志输出成功

23:43:13 SSH: EXEC: completed after 10,225 ms
23:43:13 SSH: Disconnecting configuration [swarm2] ...
23:43:13 SSH: Transferred 1 file(s)
23:43:13 Finished: SUCCESS
但问题就是,在服务器上,该进程没有运行。。很尴尬。在jenkins上发现了问题所在



这是因为Jenkins默认会在Build结束后Kill掉所有的衍生进程。


二、解决方法


1.重设环境变量build_id


方式一:(会出现timed out or was interrupted after 120,001 ms连接超时):

BUILD_ID=dontKillMe
sh /home/cloud/exec/test.sh

脚本内容为:

echo "执行.........................."
java -jar  /home/cloud/run/spring-boot-0.0.1-SNAPSHOT.jar

方法二:

sh /home/cloud/exec/test.sh

脚本内容为:

export BUILD_ID=dontKillMe
nohup java -jar  /home/cloud/run/spring-boot-0.0.1-SNAPSHOT.jar >/dev/null 2>&1 &
#奇怪如果去掉以下延时,就会被jenkins杀掉.尴尬。。。
sleep 10s

方式三:

通过daemonize方式来免杀

(1)test.sh脚本中不行
daemonize -E BUILD_ID=dontKillMe nohup java -jar  /home/cloud/run/spring-boot-0.0.1-SNAPSHOT.jar >/dev/null 2>&1 &
sleep 10s


(2)test.sh脚本中不行
daemonize -E BUILD_ID=dontKillMe -o test.log -c /home/cloud/run  /home/cloud/run/spring-boot-0.0.1-SNAPSHOT.jar >/dev/null 2>&1 &


(3)execute shell输入框中不行
daemonize -E BUILD_ID=dontKillMe -o test.log -c /home/cloud/run  /home/cloud/exec/test.sh


2.临时改变BUILD_ID值,使得jenkins不会找到并结束掉run.sh启动的后台进程

OLD_BUILD_ID=$BUILD_ID
echo $OLD_BUILD_ID
BUILD_ID=dontKillMe
sh /home/cloud/exec/test.sh
#改回原来的BUILD_ID值
BUILD_ID=$OLD_BUILD_ID
echo $BUILD_ID
test.sh内容如下:
echo "执行.........................."
nohup java -jar  /home/cloud/run/spring-boot-0.0.1-SNAPSHOT.jar >/dev/null 2>&1 &
#奇怪如果去掉以下延时,就会被jenkins杀掉.尴尬。。。
sleep 10s

3.通过Jenkins提供的启动参数禁用杀死子进程的特性


3.1使用java -jar启动,-Dhudson.util.ProcessTree.disable=true -jar jenkins.war
3.2使用Tomcat启动,Linux系统修改catalina.sh,在环境变量的说明后,脚本开始前加上JAVA_OPTS="$JAVA_OPTS -Dhudson.util.ProcessTree.disable=true";Windows系统修改catalina.bat,在环境变量的说明后,脚本开始前加上set JAVA_OPTS=%JAVA_OPTS% "-Dhudson.util.ProcessTree.disable=true";修改好Tomcat的配置文件后重新启动Tomcat



坑:
由于jenkins构建完毕后会杀掉所有启动的进程,可以通过改变BUILD_ID的值来防止后台进程被杀死

如果采用maven工程进行构建,修改BUILD_ID无效,后台进程随着jenkins构建完成后仍被杀死


参考:

https://blog.csdn.net/wangbin0016/article/details/41948171

https://blog.csdn.net/houyefeng/article/details/52269366

https://www.jianshu.com/p/a7d7df97fe4b

https://blog.csdn.net/zhangpan_soft/article/details/79575981

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐