2013-02-21 82 views
1

我有一個能夠動態觸發許多下游作業的父作業。如果上游作業停止,如何殺死下游作業?

我使用python代碼生成要觸發的作業列表,將其寫入屬性文件,使用EnvInject插件注入文件,然後使用作業列表變量(逗號分隔)變量的「參數化觸發器插件」發起工作(如果有人知道這樣做的更簡單的方法,我很樂意聽到這一點!)。

它的效果很好,除了殺死父作業,觸發的作業繼續運行,並且我還希望它們在殺死父母時死掉。

有沒有插件或方法來實現這個?也許一個工作被殺害時被調用的鉤子?

編輯: 對不起,我不清楚我的意思是「殺死」這個工作。我的意思是點擊Jenkins gui中的紅色'x'按鈕,而不是Unix信號。

在此先感謝。

+0

你是如何殺死父母的工作?至少在Linux中可以設置信號處理程序... – aychedee 2013-02-21 18:30:14

回答

2

而不是殺死工作,有另一項工作,程序化地終止所有必需的工作。您可以重複使用相同的屬性文件來知道哪些所有作業被殺死。你可以使用groovy腳本來終止工作。

0

爲了趕上SIGTERM你的過程中,你可以使用下面的代碼(UNIX專用):

import signal 

def kill_children(*args, **kwargs): 
    # some code that uses the stored list of children procs to kill them 

signal.signal(signal.SIGTERM, kill_children) 

有很多進程可以接收其它信號。 SIGKILL在你的情況中是最明顯的。所以這只是一個確定什麼信號殺死父母並處理它的問題。

相關問題