2012-10-18 43 views
1

我有一个Jenkins项目构建一个应用程序,如果成功的话,将应用程序复制到我们的测试环境并重新启动Tomcat服务器。 Tomcat启动大约需要90秒。我如何自动和/或以编程方式检查Tomcat启动是否成功,这样我可以触发部署到我们的分段环境?我们可以监视一个监视器URL,但我没有关于如何在Jenkins中实现这一点的线索。如何确定部署缓慢的应用程序是否正确部署?

回答

1

我只是通过设置在詹金斯简单EXEC作业执行下面的命令来解决这一点。

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

创建一个小脚本蚂蚁,把两件事情成parallel任务:

  • 启动Tomcat与exec任务
  • 一个condition元素与插座监听的Tomcat waitfor内部HTTP端口。您可以定义timout属性,如果它是在waitfor之后定义的,则可以使用fail来使构建失败。要检查属性,您可以简单地创建一个带有条件运行的子目标,等待后您可以调用它。

因此,像这样:

<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> 
+0

这将不起作用,因为Tomcat在服务器启动后立即开始监听:8080。我注意到关闭端口(8005)在应用程序启动之前没有启动,所以我可能会使用它。不知道这是否是一个合适的方法。 – pkhamre

+0

您可以使用GET任务(http://goo.gl/vvo6N)。您可以选择一个应用程序页面,甚至可以检查其内容。 GET也有一个超时,所以你可以使用它作为替代或额外的检查waitfor。 Ant-Contrib(http://goo.gl/pty4L)任务集合包含IF任务,这对于ANT中的条件部分非常有用。 –

+0

好的,谢谢。这绝对会有帮助! – pkhamre