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

相关推荐
未来之窗软件服务1 天前
幽冥大陆(四十九)PHP打造Java的Jar实践——东方仙盟筑基期
java·php·jar·仙盟创梦ide·东方仙盟·东方仙盟sdk·东方仙盟一体化
BD_Marathon2 天前
【JavaWeb】Servlet_jar包导入和Content-Type问题
java·servlet·jar
要站在顶端2 天前
Jenkins PR编号提取&环境变量赋值问题总结
java·servlet·jenkins
DN金猿2 天前
jenkins 权限控制(用户只能看指定的项目)
linux·运维·服务器·jenkins
weixin_307779132 天前
Jenkins Pipeline: Basic Steps 插件详解
开发语言·ci/cd·自动化·jenkins·etl
java_logo2 天前
AdguardHome Docker 容器化部署指南
运维·docker·容器·jenkins·adguardhome·部署adguardhome·docker adguard
weixin_307779132 天前
Jenkins Pipeline:Groovy插件全解析:从原理到实战应用
开发语言·ci/cd·自动化·jenkins·etl
weixin_307779132 天前
Jenkins Pipeline: API 插件详解
运维·ci/cd·自动化·jenkins·etl
weixin_307779132 天前
Jenkins Declarative Pipeline:现代CI/CD的声明式实践指南
开发语言·ci/cd·自动化·jenkins·etl
silence2503 天前
Maven Central 上传(发布)JAR 包流程
java·maven·jar