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

相关推荐
一张假钞4 小时前
Jenkins 项目迁移
ci/cd·jenkins
雨过天晴而后无语5 小时前
Windchill的codebase目录打成jar
java·jar
软件测试君9 小时前
Jenkins Share Library教程 —— 开发入门
jenkins
Broken Arrows1 天前
如何在Linux服务器上部署jenkins?
linux·jenkins
19岁开始学习1 天前
PHP操作elasticsearch7.8
elasticsearch·jenkins·php
wearegogog1231 天前
Centos7下docker的jenkins下载并配置jdk与maven
java·docker·jenkins
gb42152872 天前
elasticsearch索引多长时间刷新一次(智能刷新索引根据数据条数去更新)
大数据·elasticsearch·jenkins
故事很腻i2 天前
安装elk
运维·elk·jenkins
小醉你真好3 天前
15、Docker Compose 安装ELK + Filebeat单机版
elk·docker·jenkins
菜鸟plus+3 天前
ElasticSearch
运维·jenkins