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

时间:2014-10-09 12:11:24

标签: tomcat jenkins restart

成功部署后,如何让Jenkins重新启动Tomcat实例?

我已经尝试过使用批处理脚本,但是在构建完成时会杀死Tomcat实例。

2 个答案:

答案 0 :(得分:9)

你的答案在于Jenkins ProcessTreeKiller。一个more detailed explanation here

设计决定是杀死构建产生的任何进程以维护干净的环境。不幸的是,这意味着您无法在构建之后运行进程(例如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 &

答案 1 :(得分:1)

这是我在通过jenkins部署后重新启动Tomcat的方法。

我有两个服务器DEV和QA,我需要进行部署并重启tomcat。我在DEV服务器上安装了Jenkins。

  1. 首先,您需要在Jenkins中安装Post build task插件。
  2. 然后在已安装tomcat的服务器中创建此脚本tomcat-restart.ksh
  3. #!/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
    

    希望这有帮助。