2013-12-17 218 views
0

我開始在我的項目中使用詹金斯,我試圖並行我寫的4個文件在詹金斯測試套件(Rspec的測試案例)詹金斯:並行測試執行

spec/features/ 
|-- test1.rb 
|-- test2.rb 
|-- test3.rb 
|-- test4.rb 

我們可以通過下面運行所有測試案例命令,它將按順序運行所有用test1.rb ..test4.rb編寫的測試,這將需要大約1個小時。

script spec/features/ 

如果你想從每個測試文件EXCUTE測試情況下,我們可以運行像

script spec/features/test1.rb 

現在我想並行這些測試用例可以從1小時15分鐘,減少跑,所有這些測試用例可以在一臺機器並行

運行我採取了以下做法,詹金斯

1)設置一個新的工作「Main_Test_job」

2)

Selected "Trigger/Call builds on other projects" 
projects to build " Child_test_job" 
Build on same node 
Predefined Parameters TEST_UNIT=test1.rb 
Block until the triggered projects finish their builds (Not selected this) 

添加觸發--->

Selected "Trigger/Call builds on other projects" 
projects to build " Child_test_job" 
Build on same node 
Predefined Parameters TEST_UNIT=test2.rb 
Block until the triggered projects finish their builds (Not selected this) 

添加觸發--->

Selected "Trigger/Call builds on other projects" 
projects to build " Child_test_job" 
Build on same node 
Predefined Parameters TEST_UNIT=test3.rb 
Block until the triggered projects finish their builds (Not selected this) 

添加觸發--->

Selected "Trigger/Call builds on other projects" 
projects to build " Child_test_job" 
Build on same node 
Predefined Parameters TEST_UNIT=test4.rb 
Block until the triggered projects finish their builds (Not selected this) 

3)

Created job "Child_test_job" as which was included in main_test_job like below 
    Select Build step "Execute Shell" with below command 
    script spec/$TEST_UNIT 

當我開始「Main_Test_job」,它會自動啓動4個Child_Test_Jobs在同一臺機器上,這將我總運行時間縮短至15分鐘。

  • 但在這種情況下,「Main_test_job」有沒有辦法監測的4個 child_test_jobs狀態,它總是在啓動4個
    子作業

  • 「塊之後成功,直到觸發項目完成他們的建立「此選項 可監控子作業,但如果我們爲所有子作業選擇此選項,則 它們將按順序運行而不是並行運行。

我無法使用連接插件,因爲我沒有運行不同的作業,而是多次觸發相同的作業。

我的想法:

  1. 爲每個test.rb單獨作業,然後使用加入觸發監控所有作業

  2. 有一些外殼腳本生成後的任務 狀態「Main_Test_job」 這將聚合/監視每個作業的狀態/結果。

我認爲這在許多組織中必定是一種常見的情況,在詹金斯必須有一種簡單的方法來實現這一點。 請讓我知道你的方法/想法。可能是我在這裏失去了一些東西。

回答

1

如果您的工作可以在同一臺機器上並行運行,那麼Multijob插件可能會對您感興趣。它並行地開始工作,但一直等到所有人完成。

+0

謝謝NotAgain ..,這適用於我的要求。我應該更多地研究所有可用的插件,但其中有很多:) – Sridhar

0

您還可以使用Build Flow Plugin

您可以通過使用這個插件運行任何類型的工作。