我有一個Jenkins作業,它在Jenkins之外啓動了一個長時間運行的過程。這項工作本身由Gerrit觸發。阻止已觸發的Jenkins作業,直到* Jenkins完成*
如果在長時間運行過程中再次觸發此作業,我需要確保作業保留在Jenkins隊列中,直到完成所有過程。實際上,我希望確保這項工作永遠不會與自己並行運作,而「工作」真的是詹金斯的工作以及外部長期運行的過程。
我找不到任何方法來實現這一點。外部資源調度程序插件似乎可以工作,但每次我們在我們的系統上配置它時,Jenkins都非常不穩定(拒絕頁面加載數分鐘,奴隸線程與NPE相遇)。我可以看到的其他所有內容(例如Exclusions插件)都依賴於Jenkins本身來控制整個工作。
我試過用節點標籤篡改某些東西 - 讓作業依賴於標籤「can_run」,將該標籤分配給主控,然後讓該作業執行一個從主控中移除該標籤的Groovy腳本。 (理論上,Jenkins的另一項工作是將標籤添加回來,這將在長時間運行的過程結束時觸發)。但是這並不奏效:如果Jenkins上有任何排隊的工作實例,他們就會去即使標籤已被刪除,也立即開始。
我不知道還有什麼要嘗試!是否有其他任何比所需的節點標籤丟失,這將導致詹金斯隊列工作,如果它被觸發,但不是開始它?