【问题解决】Jenkins的Pipeline无法正常后台启动Jar包

文章目录

问题描述

执行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

相关推荐
深海蜗牛14 分钟前
Jenkins linux安装
linux·jenkins
阳光普照世界和平24 分钟前
Jenkins:库博静态工具CI/CD 的卓越之选
运维·ci/cd·jenkins
liudongyang12326 分钟前
jenkins 启动报错
java·运维·jenkins
xbd_zc3 小时前
【Jenkins简单自动化部署案例:基于Docker和Harbor的自动化部署流程记录】
docker·自动化·jenkins·harbor
胡斌附体9 小时前
设置环境变量启动jar报
java·jar·cmd·path
nangonghen1 天前
jenkins built-in节点如何删除
jenkins
全栈工程师修炼指南2 天前
解锁 Jenkins Agent 技巧,容器化轻松实现分布式构建节点扩展
运维·分布式·jenkins
梁萌2 天前
Windows系统Jenkins企业级实战
运维·windows·ci/cd·svn·jenkins
灯下夜无眠2 天前
sklearn自定义pipeline的数据处理
人工智能·python·机器学习·pipeline·sklearn
郝开2 天前
Java启动和停止jar文件sh脚本:自适应文件名方式启停 + 写死环境 启动;自适应文件名方式 + 命令行传参切换环境 启动
java·运维·jar