如果上游作业停止,如何杀死下游作业?

时间:2013-02-21 15:40:49

标签: java python jenkins jenkins-plugins

我有一个父作业,可动态触发许多下游作业。

我使用python代码生成要触发的作业列表,将其写入属性文件,使用EnvInject插件注入文件,然后使用带有作业列表变量(逗号分隔)变量的“参数化触发器插件”启动工作(如果有人知道更简单的方法,我也很乐意听到!)。

除非杀死父作业,触发的作业继续运行,并且在杀死父作业时我希望它们也死掉,所以效果很好。

是否有插件或方法来实现此功能?也许是一个工作被杀的时候被调用的钩子?

编辑: 对不起因为混乱,我不清楚我的意思是“杀死”这份工作。我的意思是点击Jenkins gui中的红色“x”按钮,而不是Unix信号。

提前致谢。

2 个答案:

答案 0 :(得分:2)

不是杀死这份工作,而是让另一份以编程方式终止所有必需工作的工作。您可以重复使用相同的属性文件来了解要杀死的所有作业。您可以使用groovy脚本来终止作业。

答案 1 :(得分: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是最明显的。因此,只需要弄清楚什么信号会杀死父母并处理它。