2015-05-04 70 views
0

我有兩個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內部功能,或者使用合適的插件?

+0

您可以通過Groovy API取消作業。 這裏參見例如:[取消排隊構建並中止執行使用Groovy詹金斯構建] [1] [1]:http://stackoverflow.com/questions/12305244/cancel-queued-builds-然後放棄執行構建使用groovy-for-jenkins – Owbea

回答

0

我建議將兩項工作合併爲一項工作。這將允許多個同時執行,並且如果編譯失敗仍然會失敗。

+1

但是它會有幾個缺點,現在我在瞄準的方向上具有優勢。我無法區分「C失敗的行爲」和「T失敗的行爲」之間的連接,而且我連續幾次不加速地運行快速C,而沒有被緩慢的T延遲。 – Alfe

+0

https://wiki.jenkins.io/display/JENKINS/Conditional+BuildStep+Plugin將允許您只在滿足特定條件時運行TEST。 – jimdrang

相關問題