Restarting Tomcat after a successful deployment with Jenkins

Joa*_*him 7 tomcat restart jenkins

How can I have Jenkins restart a Tomcat instance after a successful deployment?

I already tried using a batch script, but the Tomcat instance is killed when the build is finished.

Sla*_*lav 9

你的答案在于Jenkins ProcessTreeKiller.这里更详细的解释.

这是一个设计决定,可以杀死构建产生的任何进程,以维护一个干净的环境.不幸的是,这意味着您无法在构建之后运行进程(例如Tomcat).

您可以通过启动Jenkins来全局禁用此功能(不推荐):
java -Dhudson.util.ProcessTree.disable=true -jar jenkins.war

或者,您可以基于每个案例禁用此功能,方法是使用更改的环境变量启动流程:
BUILD_ID=dontKillMe ./catalina restart

然而有些人报告说,改变BUILD_ID是不够的.他们建议也取消设置:
JENKINS_COOKIE
JENKINS_SERVER_COOKIE

编辑:
可能发挥作用的另一个问题是,当您连接到远程shell并在该远程shell会话中启动进程时,一旦您(Jenkins)断开连接,会话就会被终止,并且会话产生的所有进程也将被终止.要解决该问题,您需要取消该进程与shell会话的关联.

一种方法是:

nohup ./catalina restart &