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