我有兩個Jenkins作業,COMPILE和TEST,COMPILE觸發器測試,COMPILE很快,測試很慢。 COMPILE重新創建TEST使用的數據,因此如果COMPILE在TEST運行時運行,TEST可能會因必要的數據暫時不可用或不完整而失敗。如何終止另一個Jenkins作業?
有時,COMPILE會被觸發很多(通過CMS,繁忙的開發)。標準的方法是通過一個鎖來同步COMPILE和TEST,這樣就不會同時運行,而是等待另一個在啓動之前完成。這種等待並不適合我,因爲它會延遲COMPILE作業太多。
另一種可能是將TEST轉爲併發運行,但在我的情況下,TEST需要太多資源才能同時運行。因此,我現在的方法是配置COMPILE,使其首先中止正在運行的TEST作業(如果正在運行),然後開始工作(最終再次觸發TEST)。幾個很快執行的COMPILE構建將會開始一個TEST構建,這將全部中止(灰色泡泡)。只有最後一個測試版本纔會完成,並顯示正常的紅色或綠色(或黃色)泡泡。但對我而言,這已經足夠了(我接受這樣一個缺點,即我無法準確檢測到哪個提交違反了構建)。
現在的問題是:我如何使COMPILE中止測試版本? (最好以一種優雅的方式。)
我只找到了一種方式generally abort a job from the outside using Jenkins's REST interface,但這似乎不是很優雅。有沒有更優雅的方式,也許使用我不知道的Jenkins內部功能,或者使用合適的插件?
您可以通過Groovy API取消作業。 這裏參見例如:[取消排隊構建並中止執行使用Groovy詹金斯構建] [1] [1]:http://stackoverflow.com/questions/12305244/cancel-queued-builds-然後放棄執行構建使用groovy-for-jenkins – Owbea