2014-01-27 60 views
3

我有兩個Jenkins作業,每當提交新變更時都會運行一個持續集成作業,並且每天中午都會執行構建/部署作業。我不希望構建同時運行,所以我使用Throttle Concurrent Builds插件強制只有這兩個作業排隊,如果其中任何一個已經在運行。我的其他任何工作都可以在這兩項工作的同時運行。Jenkins在規定的時間範圍內阻止構建特定作業

我希望構建/部署作業始終在中午運行,但有時候開發人員會在中午之前提交一個更改,導致構建/部署作業等到CI作業完成。

有沒有辦法在定義的時間範圍內阻止CI作業,例如上午11:30到下午1點,以便構建/部署作業在中午不會被阻止?

+0

有趣的問題;我使用ant腳本來鎖定2個併發作業。如果文件存在錯誤的作業出口,我將寫入一個文件。不過,我要在我的CI上測試https://wiki.jenkins-ci.org/display/JENKINS/Configuration+Slicing+Plugin。我會盡快回復 – venergiac

回答

1

恕我直言有幾種可能性:

  • 第一預步驟,檢查日期和退出與錯誤,如果日期不符合要求
  • 兩份工作這禁用和編程啓用作業調用的REST

例如作業1

curl -X POST http://usr:[email protected]/job/joobname/disable 

和作業2

curl -X POST http://usr:[email protected]/job/joobname/enable 

在給定的時間。

+1

第一個選項不會在作業歷史記錄中創建一堆「失敗」版本嗎?至於第二種選擇,我使用作業配置歷史記錄插件,每天啓用/禁用作業將填寫作業配置歷史記錄(我應該問如何在單獨的問題中防止這種情況)。 – Jeffrey

+0

添加「if ['date +%k' -ge 22] || ['date +%k' -le 5];然後退出0;否則退出1; fi;」作爲預先構建的步驟。它防止在晚上10點到6點之間開始建造。如果他們在如下時間開始,那麼建築可能仍然在平靜的時期運行:9:59 pm。試圖在安靜期開始的構建將被標記爲失敗。 – marcv81

0

您可以嘗試添加從上午11點30分到下午1點離線的從屬節點,並限制由此引起的更改導致的構建。

第二種可能性是啓用SCM輪詢計劃以在允許的時間範圍內檢查更改。

+2

感謝您的回答。我修改了SCM輪詢計劃: 'H/15 0-10,12-23 * * *' 因此,CI工作人員會在午夜和上午10:59之間每隔15分鐘調查一次更改,然後中午至午夜,在中午之前跳過小時。 – Jeffrey

相關問題