2

多くのダウンストリーム ジョブを動的にトリガーする親ジョブがあります。

Python コードを使用して、トリガーされるジョブのリストを生成し、それをプロパティ ファイルに書き込み、EnvInject プラグインを使用してファイルを挿入し、ジョブ リスト変数 (カンマ区切り) 変数を含む「パラメーター化されたトリガー プラグイン」を使用してジョブを起動します。 (誰かがこれを行うより簡単な方法を知っているなら、私もそれを聞きたいです!).

親ジョブを強制終了する場合を除いて、それはうまく機能し、トリガーされたジョブは引き続き実行されます。親を強制終了するときもそれらを停止させたいと思います。

これを実装するプラグインまたは方法はありますか? ジョブが強制終了されたときに呼び出されるフックでしょうか。

編集:混乱して申し訳ありませんが、仕事を「殺す」という意味が明確ではありませんでした。Unix シグナルではなく、Jenkins GUI の赤い「x」ボタンをクリックすることを意味します。

前もって感謝します。

4

2 に答える 2

2

ジョブを強制終了する代わりに、必要なすべてのジョブをプログラムで終了する別のジョブを作成します。同じプロパティ ファイルを再利用して、どのすべてのジョブを強制終了するかを知ることができます。groovy スクリプトを使用してジョブを終了できます。

于 2013-02-21T16:09:33.917 に答える
1

プロセス内で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はあなたの状況で最も明白です。したがって、親を殺している信号を特定し、それを処理するだけです。

于 2013-02-21T18:36:49.423 に答える