Jenkins在Tomcat 中启动,执行Execute Shell 后进程在job 结束时被kill
首先看下Jenkins的官方文档, 这里面有介绍
方法1:设置启动参数禁止进程被杀
Jenkins 在1.3.15之前提供了hudson.util.ProcessTreeKiller.disable 属性为true时会禁止杀掉进程
在1.260提供了hudson.util.ProcessTree.disable,为了兼容, 1.404两个属性都可以使用,建议使用hudson.util.ProcessTree.disable (升级后,ProcessTreeKiller 被废弃了),将属性值设为true 而禁止杀掉进程。
直接使用 java -jar启动: java -Dhudson.util.ProcessTree.disable=
true
-jar jenkins.war
Tomcat 容器启动:
在Linux上, 修改 catalina.sh 脚本,在脚本开始前添加: JAVA_OPTS="$JAVA_OPTS -Dhudson.util.ProcessTree.disable=true"
Windows,修改catalina.bat 脚本开始前添加 set JAVA_OPTS=%JAVA_OPTS% "-Dhudson.util.ProcessTree.disable=true"
改好了重启Tomcat
方法2: 修改Jenkins的BUILD_ID
在配置页面添加BUILD_ID=DONTKILLME(值随意)
如果自己写脚本:
Linux:
OLD_BUILD_ID=$BUILD_ID
echo $OLD_BUILD_ID
BUILD_ID=DONTKILLME // 值随意
/export/project/demo/tomcat/bin/startup.sh // 要跑的命令脚本路径,最好是绝对路径
BUILD_ID=$OLD_BUILD
Windows:
OLD_BUILD_ID=%BUILD_ID%
echo %OLD_BUILD_ID%
BUILD_ID=DONTKILLME
../project/demo/tomcat/bin/startup.bat // 命令路径,最好是绝对路径
BUILD_ID=%OLD_BUILD_ID%
echo %BUILD_ID%
如果这些试了, 存在Jenkins服务被kill掉, 请检查自己的Tomcat配置, 看看内存是够够,或者直接在catalina.sh中设置
参考:Tomcat 内存设置
参考文档