使用Jenkins成功部署后重新启动Tomcat

wtlkbnrh  于 2022-11-02  发布在  Jenkins
关注(0)|答案(3)|浏览(425)

如何让Jenkins在成功部署后重新启动Tomcat示例?
我已经尝试过使用批处理脚本,但是构建完成时Tomcat示例被终止。

nbewdwxp

nbewdwxp1#

你的答案就在Jenkins ProcessTreeKiller里。
这是一个设计决策,它会杀死由构建产生的所有进程,以保持一个干净的环境。不幸的是,这意味着您不能在构建之后让进程(如Tomcat)继续运行。
您可以按如下方式启动Jenkins,以全局方式禁用此功能(不推荐):
BUILD_ID=dontKillMe ./catalina restart
或者,您可以通过使用更改后的环境变量启动流程来逐个禁用此功能:
BUILD_ID=dontKillMe ./catalina restart
然而,有些人报告说,仅仅更改BUILD_ID是不够的。他们还建议取消设置:
JENKINS_COOKIE
JENKINS_SERVER_COOKIE

编辑:

另一个可能的问题是,当你连接到远程shell,并在该远程shell会话中启动一个进程时,一旦你(Jenkins)断开连接,该会话就会被终止,该会话所产生的所有进程也会被终止。要解决这个问题,你需要断开该进程与shell会话的关联。
其中一个办法是:
nohup ./catalina restart &

lnvxswe2

lnvxswe22#

这就是我如何在通过jenkins部署后重新启动Tomcat。
我有两个服务器DEV和QA,我需要在其中进行部署和重新启动Tomcat。我在DEV服务器中安装了Jenkins。
1.首先你需要在Jenkins中安装Post build task插件。
1.然后在安装了tomcat的服务器上创建此脚本tomcat-restart.ksh
#!/bin/bash echo "*********************Restarting Tomcat70.******************" sh /apps/apache/sss-tomcat70.ksh status echo "Trying to stop Tomcat." sh /apps/apache/sss-tomcat70.ksh stop echo "Getting Tomcat Status." sh /apps/apache/sss-tomcat70.ksh status echo "Trying to Start Tomcat" sh /apps/apache/sss-tomcat70.ksh start sleep 2 echo "Getting Tomcat Status" sh /apps/apache/sss-tomcat70.ksh status
正在DEV服务器上重新启动Tomcat。
由于Jenkins和Tomcat安装在同一台机器上,因此我直接调用脚本。
在Jenkins中,转到Add post-build action并选择Post build task,然后在Script文本框中添加以下内容:/apps/apache/tomcat-restart.ksh
正在QA服务器中重新启动Tomcat。
由于Jenkins安装在不同的服务器上,因此我调用脚本通过Secure Shell重新启动Tomcat。
在Jenkins中,转到“添加post-build action”,选择“Post build task”,然后在“脚本”文本框中添加以下内容:
sshpass -p 'myPassword' ssh -tt username@hostname sudo sh /apps/apache/tomcat-restart.ksh
如果尚未安装sshpass,则需要安装它。
如果一切顺利,那么您可能会在Jenkins日志中看到类似的内容。

Running script  : /apps/apache/tomcat-restart.ksh
[workspace] $ /bin/sh -xe /tmp/hudson43653169595828207.sh

+ /apps/apache/tomcat-restart.ksh

*********************Restarting Tomcat70.*********************

Tomcat v7.0 is running as process ID 3552

*********************Trying to stop Tomcat.*********************

Stopping Tomcat v7.0 running as process ID 3552...

*********************Getting Tomcat Status.*********************

Tomcat v7.0 is not running

*********************Trying to Start Tomcat*********************

Starting Tomcat v7.0 server...

*********************Getting Tomcat Status*********************

Tomcat v7.0 is running as process ID 17969

希望这对你有帮助。

j0pj023g

j0pj023g3#

在Jenkins的某些版本中,“JENKINS_SERVER_COOKIE”不起作用,因此在这种情况下,您可以使用“JENKINS_NODE_COOKIE”。
例如:Jenkins_节点_COOKIE=不要杀我

相关问题