2013-02-27 177 views
1

在應用程序服務器(JBoss)中運行了一些測試;我們希望在Jenkins中整合這些測試。根據後臺進程啓動進程

在詹金斯有下列步驟(所有步驟都是螞蟻步):

  • ...(其他步驟)在後臺
  • 啓動服務器
  • 運行測試
  • 停止服務器
  • ...(其他步驟)

服務器需要以ba ckground爲了讓下列任務能夠完成他們的工作。我寫了下面的腳本來模擬這個:

export LAUNCH_JBOSS_IN_BACKGROUND=1 
./run.sh & 
sleep 400 
cd /testTriggerLocation 
ant run-tests 
kill `cat $jBossHome/4.0.5/bin/jboss.pid` 

run.sh啓動服務器,它啓動後它存儲在jboss.pid JVM進程ID。

以正常的方式(前臺進程)JBoss需要大約100秒才能啓動,但在這裏它取決於睡眠參數的值。如果我把200秒放在〜190 - 210秒之間,如果是300秒,則需要290 - 310秒;問題是如果在服務器啓動之前觸發測試,他們顯然會失敗。有沒有辦法同步這個?或者也許另一種方式來做到這一點?

+0

爲什麼你需要到餐桌run.sh? – 2013-02-27 16:23:58

+0

run.sh或它開始產生日誌嗎?如果是這樣,你可以在這裏看到某些東西在這個日誌中,說出「開始」或任何它打印出來說它準備好去...然後讓腳本繼續..而不是隻是一個睡眠。 – 2013-02-27 16:40:10

+0

@EarlGray因爲如果它是一個前臺進程,它將無限期地在Jenkins中運行,然後測試將不會運行。 – m3th0dman 2013-02-27 16:59:15

回答

0

您可能想要使用一個簡單的進程管理器,如supervisordGod,它可以在運行測試時爲您守護進程。

在我的情況下,使用上帝,我會跑:

god -c my-project.god 
ruby test-runner.rb 
god terminate