我已經搜索了整個互聯網2周現在,問freenode IRC和詹金斯用戶組郵件列表中,但沒有得到答案,所以我在這裏,你是我最後的希望(沒有壓力)詹金斯管道和大量的並行步驟
我有一個詹金斯腳本管道,生成數百個並行分支,必須在數百個從節點上同時運行。目前,Jenkins BlueOcean用戶界面看起來並不適合。我們達到了一個點,所有的步驟都無法顯示。
我需要提供某種背景讓您瞭解我們的需求:我們公司有一個巨大的項目,擁有數千個Behat/Selenium,如果順序完成,現在需要30小時才能運行。我們前幾次實現了一個基本的解決方案,我們使用排隊系統(RabbitMq)來存儲運行測試的所有測試和消費者,它們通過從Jenkins下載源代碼並將工件上傳回Jenkins,但這不像可以詹金斯的本地奴隸,它不夠可維護(例如,我們不受益於實時輸出日誌和使用統計)。
我知道這裏有一個公開的問題,描述這裏的問題:https://issues.jenkins-ci.org/browse/JENKINS-41205但基本上,我需要一個解決方案,爲下一週工作(我們的發展團隊正在等待這個新的管道很長一段時間)。
我們pippeline看起來像這樣的時刻:
Build --- Unit Tests --- Integration Tests --- Functional Tests ---
| | |
tool A suite A matrix-A-A-batch 0
tool B suite B matrix-A-A-batch 1
tool C matrix-A-A-batch 2
matrix-A-A-batch 3
....
"Unable to display more"
你可以在這裏找到一個完整版我們Jenkinsfile的:https://github.com/willy-ahva/pim-community-dev/blob/086e4ed48ef1a3d880ca16b6f5572f350d26eb03/Jenkinsfile(它可能看起來很複雜,但是,基本上,真正的問題是「功能測試」階段)
我的問題是:
- 我在用水貨的好方法嗎?
- 這僅僅是一個詹金斯/藍海問題,我應該爲我鏈接的問題做出貢獻? (如果是的話,怎麼樣?我根本不是Java開發者)
- 我應該嘗試使用MultiJob並行化作業而不是步驟嗎?
- 除了可以使用的並行之外,還有其他的工具嗎? (某種叉子或其他)?
非常感謝您的幫助。我喜歡Jenkins在Pipeline和BlueOcean用戶界面上的成就,我真的很想在團隊中發揮作用。
隨着Spencer Malone的消化,我們保持了這種並行性的隊列系統。我們稍微改變了我們的構建,以便更容易擴展(通過消除主用戶與消費者之間的多對一關係,因此不會產生瓶頸)。 –