2013-10-14 113 views
0

我們的Jenkins服務器配置有兩個主要作業來構建apks。每個作業都有一個子作業,它將APK安裝到連接到構建服務器並執行UI測試的Android設備上。如何強制執行單獨的Jenkins作業的同步執行?

例如:

項目-A-APK
項目-A-測試
項目-B-APK
項目-B-測試

其中

Project-A-apk啓動項目A測試
項目3210-B-APK踢斷項目-B-測試

兩個項目-A-測試和項目-B-測試安裝和相同的測試設備上運行。

問題是,我們不能讓測試作業同時運行,因爲它們都會嘗試與同一設備進行交互。

有沒有辦法配置一個作業在執行之前等待其他作業(不在其父鏈中)?

回答

0

我們使用Jenkins Exclusion Plugin來管理我們的版本,這些版本必須共享幾個不同的數據庫資源。該插件通過允許您在構建步驟中定義關鍵塊來工作。關鍵塊只有在可以獲取特定資源時纔會運行。在塊的末尾釋放資源。這意味着您不必阻止整個工作,只需要部分資源。

0

你應該嘗試Build Blocker Plugin

這個插件保持實際工作隊列如果 當前運行的作業至少一個名稱與給定的正 表達式之一匹配。

另一種方法是將詹金斯執行者的數量限制爲一個。這可以確保只有一個工作正在運行,而其他隊列正在等待。但是,這可能會阻止未訪問測試設備的其他未來作業。

1

我使用Throttle Concurrent Builds Plugin來控制作業應該同時運行。

設置一個類別名稱,例如android-device的Maximum Concurrent Builds Per Node設置爲1.將此類別指定給在Android設備上運行測試的作業。一旦安裝插件,就可以在作業配置頁面上分配類別。

所有分配了相同類別名稱的作業將連續執行而不是同時執行。