Continuous integration 如何确定缓慢部署的应用程序是否正确部署?

Continuous integration 如何确定缓慢部署的应用程序是否正确部署?,continuous-integration,jenkins,continuous-deployment,Continuous Integration,Jenkins,Continuous Deployment,我有一个Jenkins项目,它构建一个应用程序,然后,如果成功,将该应用程序复制到我们的测试环境中,并重新启动Tomcat服务器。Tomcat启动大约需要90秒。我如何能够自动和/或以编程方式检查Tomcat启动是否成功,以便触发到登台环境的部署?我们有一个我可以监视的监视URL,但我没有关于如何在Jenkins中实现它的线索。创建一个ant scriptlet,并将两件事情放入一个任务中: 用task启动Tomcat 一个元素,其中包含一个用于tomcat http端口的套接字侦听器。您可以

我有一个Jenkins项目,它构建一个应用程序,然后,如果成功,将该应用程序复制到我们的测试环境中,并重新启动Tomcat服务器。Tomcat启动大约需要90秒。我如何能够自动和/或以编程方式检查Tomcat启动是否成功,以便触发到登台环境的部署?我们有一个我可以监视的监视URL,但我没有关于如何在Jenkins中实现它的线索。

创建一个ant scriptlet,并将两件事情放入一个任务中:

  • 用task启动Tomcat
  • 一个元素,其中包含一个用于tomcat http端口的套接字侦听器。您可以定义timout属性,如果它是在waitfor之后定义的,则可以使用来使生成失败。要检查属性,您只需创建一个子目标,并在waitfor之后调用它
比如说:

<target name="runCheckedTomcat">
    <parallel>
        <sequential>
            <echo>Tomcat starts</echo>
            <exec command="start.bat" dir="tomcatdir">
            </exec>
        </sequential>
        <sequential>
            <waitfor timeoutproperty="timeout" maxwait="15" maxwaitunit="second">
                <socket server="localhost" port="8080"/>
            </waitfor>
            <antcall target="fail"/>
        </sequential>
    </parallel>
</target>

<target name="fail" if="timeout">
    <fail message="Tomcat is not started in time"/>
</target>

雄猫开始

我只是通过在Jenkins中设置一个简单的exec作业来解决这个问题,该作业执行以下命令

curl -f -m 120 -o /dev/null -s -S http://example.org:8080/application

这将不起作用,因为Tomcat在服务器启动后立即开始侦听:8080。我注意到关闭端口(8005)在应用程序启动之前没有启动,所以我可能可以使用它。但不确定它是否是正确的方法。您可以改用GET task()。您可以选择应用程序的一个页面,甚至可以检查其内容。GET也有一个超时,所以您可以将其用作替换或附加的等待检查。Ant Contrib()任务集合包含IF任务,这对于在Ant中包含条件部分非常有用。