这就是我如何在通过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
3条答案
按热度按时间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 &
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日志中看到类似的内容。
希望这对你有帮助。
j0pj023g3#
在Jenkins的某些版本中,“JENKINS_SERVER_COOKIE”不起作用,因此在这种情况下,您可以使用“JENKINS_NODE_COOKIE”。
例如:Jenkins_节点_COOKIE=不要杀我