【问题解决】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

相关推荐
syty20202 小时前
elastic search 是如何做sum操作的
运维·jenkins
奋豆来袭11 小时前
wins中怎么用一个bat文件启动jar包和tomcat等多个服务
jar
苦逼IT运维14 小时前
Jenkins 监控方案:Prometheus + Grafana 实践
jenkins·grafana·prometheus
一念一花一世界15 小时前
DevOps实战(3) - 使用Arbess+GitLab+Hadess实现Java项目自动化部署
gitlab·jenkins·tiklab·arbess·开源cicd工具
小薛博客1 天前
22、Jenkins容器化部署Java应用
java·运维·jenkins
观测云2 天前
Jenkins 可观测最佳实践
jenkins
一念一花一世界2 天前
DevOps实战(2) - 使用Arbess+GitPuk+Docker实现Java项目自动化部署
jenkins·tiklab·arbess·开源cicd工具·docker构建部署
栗子~~2 天前
bat脚本- 将jar 包批量安装到 Maven 本地仓库
java·maven·jar
程序员皮皮林2 天前
Java jar 如何防止被反编译?代码写的太烂,害怕被人发现
java·开发语言·jar
切糕师学AI2 天前
持续集成和持续交付 (CI/CD) 工具——Jenkins
运维·ci/cd·jenkins