2012-01-04 35 views
5

在Jenkins中我有許多不同的工作,它們被劃分爲具有自己的構建/測試/分析「管線」的項目。這些作業中的大部分實際上都是遠程命令,而不是現成的版本。Jenkins中的多個構建隊列

但是,詹金斯開箱即用只支持一個排隊隊列全部構建。我想爲每個項目(或視圖)定義一個隊列。

我該如何做到這一點?

回答

4

據我所知,如果不更改Jenkins代碼,這是不可能的,但我認爲你可以通過使用build slaves.來實現最小維護的相同目標。不同的構建可以同時運行在從站上,或者甚至在同一個從站上運行定義多個執行程序(如果從機具有> 1個CPU)。您可以標記從站以控制每個從站執行哪些作業,因此您可以爲每個管道分別設置一組從站。

除了確保基本從機保持運行的開銷以外,Jenkins運行從機的特定開銷很小。您可以在主服務器上使用進程來保留您需要更新的從服務器JAR文件和生成工具;在我的商店裏,我們使用一個簡單的rsync腳本,每次重啓主設備或從設備時,都會將最新的工具從主設備複製到從設備,並重新啓動從設備進程。

這種方法也減少了詹金斯主人是單點故障的程度。

+0

不,我要求有多個*隊列*的能力。我可以提高隊列中併發作業的數量。 – 2012-01-04 18:00:09

+0

你可以擴展你爲什麼需要多個隊列嗎? – 2012-01-04 19:16:26

+0

我有多個項目。每個項目都有自己的管道。每個項目都可以與其他項目同時進行構建,最多可以達到一定的限制X--即受其工具集的許可限制。構建可以在本地(罕見)或遠程(常見)啓動。理想情況下,詹金斯沒有安裝在每臺機器上(管理成本非常高) - 有一箇中央調度器向遠程編譯器發送命令。 – 2012-01-04 20:56:17

0

你想要的只能通過爲每個項目運行一個單獨的Jenkins master來完成。

通常人們認爲詹金斯大師比奴隸有更多的管理開銷,但如果這不適合您,您可以在服務器上運行多個主人,只需爲他們分配不同的端口。

如果這對你不好,那Jenkins可能不適合你。它不是那裏唯一的CI服務器。詹金斯非常容易設置,但另一方面,不可能進行深度定製,比如多個構建隊列。

0

我知道這個線程是舊的,但我認爲我會反正評論。

IMO

我會使用一個主人和多個奴隸。但通過配置管理工具或CMT(Chef,Puppet,Ansible等)來管理工具配置要求。我會通過特定要求的標籤(windows,linux,Mac,visualstudio,maven等)將管道鎖定到特定的構建從站。 android-sdk等)。由於從屬設備是在您的cmt中配置的,因此無論它是虛擬機還是物理硬件,都可以輕鬆啓動新機器。一個詹金斯大師可以處理200多個構建奴隸。

0

首先,我想指出的是,與其他答案一樣,將不同的構建隊列掛接到不同的從站將是推薦的解決方案,但是有一種方法可以實現與主節點相同的效果。

有一個名爲Throttle Concurrent Builds的插件。它允許以每個作業爲基礎或跨作業設置構建併發級別。

的文檔是有點模糊,所以這些都是爲我工作的步驟:

  1. 安裝插件後,轉到管理詹金斯 - >配置系統
  2. 節流併發構建部分定義了作業組及其各自的併發級別。
  3. 現在對於要限制每個作業,去它的配置,使節流並行構建一般部分),選擇節流這個項目作爲一個或多個類別的一部分,並指定一個或多個在上一步中定義的類別(不需要再次設置限制)。