在与Jenkins成功部署后重新启动Tomcat

在与Jenkins成功部署后重新启动Tomcat,tomcat,jenkins,restart,Tomcat,Jenkins,Restart,如何让Jenkins在成功部署后重新启动Tomcat实例 我已经尝试过使用批处理脚本,但是Tomcat实例在构建完成时被终止。答案在于。A 这是一个设计决策,杀死构建所产生的任何进程,以维护一个干净的环境。不幸的是,这意味着您不能让进程(比如Tomcat)在构建之后运行 通过如下方式启动Jenkins,您可以全局禁用此功能: java-Dhudson.util.ProcessTree.disable=true-jar jenkins.war 或者,您可以根据具体情况禁用此功能,方法是使用更改的环

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

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

答案在于。A

这是一个设计决策,杀死构建所产生的任何进程,以维护一个干净的环境。不幸的是,这意味着您不能让进程(比如Tomcat)在构建之后运行

通过如下方式启动Jenkins,您可以全局禁用此功能:
java-Dhudson.util.ProcessTree.disable=true-jar jenkins.war

或者,您可以根据具体情况禁用此功能,方法是使用更改的环境变量启动流程:
BUILD\u ID=dontKillMe./catalina重启

然而,有些人报告说,仅仅更改
构建ID
是不够的。他们还建议取消设置:
JENKINS\u COOKIE

JENKINS\u服务器\u COOKIE

编辑:
另一个可能存在的问题是,当您连接到远程shell并在该远程shell会话中启动一个进程时,一旦您(Jenkins)断开连接,该会话将被终止,该会话产生的所有进程也将被终止。为了解决这个问题,您需要将进程与shell会话解除关联

一种方法是:


nohup./catalina重启&

这就是我在通过jenkins部署后重启Tomcat的方式

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

  • 首先,您需要在Jenkins中安装插件
  • 然后在安装了tomcat的服务器上创建这个脚本
    tomcat restart.ksh
  • #/bin/bash
    echo“**********************重新启动Tomcat70.***************************”
    sh/apps/apache/sss-tomcat70.ksh状态
    echo“试图阻止Tomcat”
    sh/apps/apache/sss-tomcat70.ksh停止
    echo“获取Tomcat状态”
    sh/apps/apache/sss-tomcat70.ksh状态
    echo“尝试启动Tomcat”
    sh/apps/apache/sss-tomcat70.ksh启动
    睡眠2
    echo“获取Tomcat状态”
    sh/apps/apache/sss-tomcat70.ksh状态

    在DEV服务器上重新启动Tomcat

    因为Jenkins和Tomcat安装在同一台机器上,所以我直接调用脚本

    在Jenkins中,转到
    添加生成后操作
    并选择
    生成后任务
    ,然后在
    脚本
    文本框中添加以下内容:
    /apps/apache/tomcat restart.ksh

    在QA服务器中重新启动Tomcat

    因为Jenkins安装在不同的服务器上,所以我调用脚本通过Secure Shell重新启动Tomcat

    在Jenkins中,添加
    生成后操作
    选择
    生成后任务
    ,并在脚本文本框中添加以下内容:
    sshpass-p'myPassword'ssh-ttusername@hostnamesudo sh/apps/apache/tomcat restart.ksh

    如果尚未安装,则需要安装
    sshpass

    如果一切顺利,那么你可能会在詹金斯日志中看到类似的内容

    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
    

    希望这有帮助。

    您什么时候运行批处理脚本?如果您在“后期构建事件”之后执行此操作,它应该会起作用。我已经使用了Jenkins ProcessTreeKiller,但没有成功。当我用这个参数启动Jenkins时,我注意到派生进程的行为没有什么不同。您是否连接到远程shell?编辑了答案,把远程shell带进了帐户啊!编辑的部分是远程脚本执行的关键步骤。我一直在挠头思考,为什么tomcat在关机正常工作时不能启动。非常感谢你。