问题描述
执行Jenkins的Pipeline,执行结果显示为成功,但是Java程序没有成功启动
排查Jenkins日志
日志中执行的启动Jar包命令为
nohup java -jar /root/jenkins/workspace/Jenkins-Learning-0.0.4-SNAPSHOT.jar
Pipeline中配置的启动Jar包命令为
"nohup java -jar ${TARGET_DIR}/${jarName} > ${TARGET_DIR}/mylog.log 2>&1 &"
启动流水线观察Jar包启动情况
[root@jh-centos7 workspace]# jps
8823 war
9945 Jps
[root@jh-centos7 workspace]# jps
8823 war
9979 Jenkins-Learning-0.0.4-SNAPSHOT.jar
9966 Jps
[root@jh-centos7 workspace]# jps
8823 war
9979 -- process information unavailable
9997 Jps
从上述可以看到,流水线在执行过程中是有一瞬间启动了Jar包的,但是之后进程又消失了
初步推测问题
Pipeline中设置的命令与真正执行时的命令不同,主要区别在于是否有后台启动标识"&"
问题原因:Jenkins进程管理机制
Jenkins的进程管理机制:ProcessTreeKiller。Jenkins会在构建任务结束时,关闭构建任务本身的进程和在构建任务进程中启动的其他进程。
问题解决:改写启动Jar包命令
JENKINS_NODE_COOKIE=dontKillMe nohup java -jar ${TARGET_DIR}/${jarName} > ${TARGET_DIR}/mylog.log 2>&1 &
参考文章
https://blog.csdn.net/weixin_43767360/article/details/131980955
本站资源均来自互联网,仅供研究学习,禁止违法使用和商用,产生法律纠纷本站概不负责!如果侵犯了您的权益请与我们联系!
转载请注明出处: 免费源码网-免费的源码资源网站 » 【问题解决】Jenkins的Pipeline无法正常后台启动Jar包
发表评论 取消回复