2016-07-13 96 views
0

也許有人可以幫助我。 我想在Jenkins中爲某些項目一次運行一個構建,即使隊列中有更多構建。我知道我可以限制執行程序的數量,但它會影響所有項目,並且此解決方案不適合我。我嘗試使用Throttle Concurrent Builds插件,因爲它是在這種情況下推薦的,但它不起作用,我不知道爲什麼。在Jenkins連續運行作業

在我安裝這個插件之前,所有版本都能正常運行。當我安裝了它(剛剛安裝,我沒有對配置進行任何修改)的版本進入隊列並且永遠不會啓動(我使用2個executors,兩者都處於空閒狀態)。我驗證了我的節點一切正常,在線,執行者數量等於2,並且儘可能地利用它。免費空間沒有問題。越來越多的執行者也無濟於事。

然後我試着配置油門併發構建(就像一個實驗)。我進入了'配置系統',並添加了'最大總併發版本'和'最大併發版本每個節點'設置爲1的'多項目調節器類別'。我去了我的一個項目並選擇'節流併發版本'選項。接下來,我選擇「將此項目作爲一個或多個類別的一部分進行調整」,並選中剛剛創建的「多項目調速分類」複選框。因此,當我點擊「立即生成」爲我的項目沒有發生任何事情。它甚至沒有去建立隊列。

禁用油門併發構建插件使我的項目再次構建。

我有2個問題:

  1. 爲什麼當我有節流並行構建啓用插件(建立去排隊,並且永遠不會啓動或不會出現在所有)我不能建任何項目?

  2. 是否有任何其他方式來強制某些作業按順序運行(除了更改執行數量以外)?我有一些執行Windows批處理命令的項目。無論我計劃建造多少個項目(項目數量及其組合是可變的),它們都必須始終單獨運行。

謝謝你在前進, 安娜

PS。我剛剛開始與詹金斯的冒險,所以請理解:)

+0

這裏有一些很好的討論:http://stackoverflow.com/questions/11158382/jenkins-to-not-allow-the-same-job-to-run-concurrently-on-the-same-node – Amit

+0

你是否只需要在任何時候對每個工作進行一次實例?或者你的意思是你有一份你想要「順序」運行的工作清單 - JobA,JobB,JobC等等? – BitwiseMan

+0

我只記得一個插件構建流程允許您定義的工作序列,工作流程順序或並行:https://wiki.jenkins-ci.org/display/JENKINS/Build+Flow+Plugin –

回答

2

如果你只想讓詹金斯運行任何工作的一個實例,你不需要任何特殊的插件。只需確保該作業的「執行併發構建如果需要」複選框未選中。

作爲幫助該選項的狀態:

當這個選項被選中,多建立此項目可以並行執行的。

默認情況下,一次只執行一個項目的單個構建 - 任何其他開始構建該項目的請求都將保留在構建隊列中,直到第一個構建完成。 這是一個安全的默認設置,因爲項目通常需要對某些資源(如數據庫或硬件)的獨佔訪問。

但是啓用此選項後,如果有足夠的可用的構建執行程序可以處理此項目,那麼此項目的多個構建將並行進行。如果在任何時候沒有足夠的可用執行程序,則任何進一步的構建請求都將像平常一樣保持在構建隊列中。

這個簡單的「一個或多個」併發模型足以滿足廣泛的用途,包括您所描述的一個。

如果您需要更詳細的控制時,才應切換到Throttle Concurrent Builds Plugin。例如,「每個代理最多允許2個實例允許7個併發實例(無論可用執行程序的數量是多少)」。

+0

首先,謝謝你的回答:)可能我的描述不準確。對於我的所有項目,都會取消選中'如果需要執行併發構建'複選框。 我有一些執行windows批處理命令的自由式項目(讓我們將它們命名爲projectA和projectB),並且我想按順序構建它們。正當我安排例如首先10個項目在同一時間開始執行(執行人數設置爲2)。對於其他項目可以,但是當沒有其他項目構建時,應該分別構建projectA或projectB。 – Anna

0

我找到了原因節流並行構建插件沒有工作。我的詹金斯版本真的很老。當我升級到2.13項目開始以預期的方式建立,這個插件正是我所需要的。謝謝你的幫助!

1

以下插件詹金斯,並會做你要找的內容:

https://wiki.jenkins-ci.org/display/JENKINS/Multijob+Plugin

創建「多椎」項目,該項目允許您定義「階段」爲其打造。

許多「相」可以設置爲多椎項目和各階段的一部分「包含」一個或多個「其他」詹金斯的工作。 MultiJob項目運行時,階段將按順序運行。

因此,爲了按順序運行n個工件,添加N步到你的多椎項目,然後一個作業添加到每個階段。

注:對於每一個指示「並行運行」或「連續運行」階段,這是我走上意味着它會運行包含在相位順序或並行作業的設置。但是,當我設置「順序運行」時,這些作業似乎仍然平行運行。 (我需要進一步調查這個設置)。

+0

請不要只是發佈一些工具或庫作爲答案。至少在答案中演示[它如何解決問題](http://meta.stackoverflow.com/a/251605)。 –

+0

@BaummitAugen - 我已經採納了你的意見,並提供了關於插件如何工作的更多信息。 我在工作時內部使用了插件,並且可以證明它提供了OP所需的內容。 –

0

我使用MultiJob插件通過添加構建步驟來完成此操作。

我以前觸發/呼叫建立在其他項目,進入了項目的名稱先做,然後選擇阻塞,直到觸發項目完成他們建立。我爲每個想要按順序執行的項目添加了構建步驟。

相關問題