2012-10-18 76 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