2013-10-07 77 views
0

我使用Jenkins作爲構建版本,並且編寫了一些測試腳本,需要在構建編譯之後運行。 我想節省一些時間,所以我必須並行運行測試腳本。我怎樣才能做到這一點?在Jenkins中運行並行作業

編輯:好的,我明白知道,我需要一個單獨的工作爲每個測試(4次測試中,我需要4個職位,對吧?) 所以,我這樣做,並通過父作業我跑這個職位。 (使用「構建其他項目」插件)。 但我沒有設法彙總結果(使用匯總下游測試結果)。在下游作業完成之前,父作業會退出。 我該怎麼辦?

謝謝。

回答

0

詹金斯並不真的讓你平行運行。然而,你可以將你的構建分成不同的工作來實現這一點。它看起來像這樣。

  • 作業編譯源代碼運行。
  • 運行測試的作業由編譯完成並開始運行觸發。他們將先前作業的編譯結果複製到其工作區中。

雖然這是一個很大的問題。更好的選擇是在運行測試的腳本中進行並行處理,即運行單個腳本,然後並行運行測試。如果這是不可能的,你將不得不分裂成不同的工作。

+0

謝謝,但我還是有一點問題,當構建成功,只有測試失敗,詹金斯標誌着整個建設成爲「不穩定」。如果我將它分解爲兩個作業,構建作業將會成功,只有運行測試的作業將會變得不穩定。這對我來說是個問題。 和我有很多測試,我是否需要爲每一個創建一個單獨的作業? – user1836185

+0

你需要單獨的工作。關於另一個問題,你可以運行一項工作,收集所有的結果,並在一切完成後給出正確的結果。 –

+0

但比第一份工作還是會成功的吧?我不確定我是否理解上一份工作的目的.. – user1836185

0

你看過Jenkins JOIN插件嗎?我沒有使用它,但我相信這是你正在嘗試完成的。

邁克 -

+0

正如我上面寫的,我需要在Jenkins中同時運行一些測試。我可以在同一個項目中使用詹金斯的「後期製作動作」一個接一個地執行它們(不是並行的)。但我需要平行運行它們。我不想在我的perl腳本中做這件事,我需要詹金斯去做。現在更清楚了嗎?謝謝:) – user1836185

+0

編輯我的答案,希望能回答你的問題。 – mikew

+0

加入的問題是我需要創建一個加入作業。我需要的主要工作將等待測試結果,所以它可以發送只有一個郵件與構建蘭特的測試結果.. – user1836185

0

其實你可以,但你需要背後的一些編碼。 就我而言,我在jenkins上執行了並行測試。

1)與應該做一個測試運行的小套房

2)編輯這份工作的奴隸名單上運行(如果您有適當的參數創建一個小的工作環境)

3)編輯此版本允許併發建立

現在最困難的部分。

4)創建一個小型java程序,用於計算每個要運行的作業的參數列表。

5)迭代通過列表並在新線程上啓動新的Jenkins作業。

將運行間有Thread.sleep(5000)爲了避免通信錯誤

6)加入螺紋

在每個作業結束時,我將結果發送到共享位置,以執行一些在所有測試結束時進行報告。

對於開始參數的詹金斯工作中使用CLI

我打算讓我的代碼儘可能通用和發佈它,如果任何人都需要它。