2011-09-13 262 views
29

我在Jenkins有一些工作,使用Selenium通過網站的前端修改數據庫。如果其中一些作業同時運行,則可能導致由於髒讀導致的錯誤。有沒有辦法迫使詹金斯的某些工作無法同時運行?我寧願不必在數據庫上放置或拾取鎖,這可以通過任何數量的正在測試的用戶讀取或修改。有沒有辦法讓詹金斯的工作互相排斥?

回答

21

你想要Throttle Concurrent Builds插件,它可以讓你定義全局和每個節點的信號量。

鎖定和鎖存正在deprecated支持油門併發構建。

+0

我沒有注意到Lock&Latches插件上的棄用警告,我將用這個新插件更新我的Jenkins,謝謝。 –

4

我試過locks & latches插件和port allocator插件作爲實現你想要做的事情的方法。對我來說都沒有可靠的工作。一些時間鎖定鎖&,但我偶爾會掛起工作。使用端口分配器作爲黑客將工作,除非你有多個jenkins節點,但配置開銷很高。我已經在最終結算是另一個黑客,但它工作可靠,使用核心詹金斯的東西(無插件):

  • 建立在相同的機器上運行的主從節點(或沒有,如果你有大量的箱)
  • 給這從一個單一的執行(關鍵)
  • 領帶必須沒有到這個新的從節點
  • 選擇設置從服務器的使用情況,以「只綁作業同時運行2個(或n)工作'如果它碰巧在新的奴隸上運行,它會搞砸你的其他工作

由於奴隸只有一個執行者,與其相關的工作永遠不能一起運行。

+2

太棒了!對於像我這樣的初學者來說,只需要注意一件事:綁定作業,在作業配置中使用「限制可以運行此項目的位置」選項。 – Linulin