如果上游作业停止,如何杀死下游作业?
问题描述:
我有一个能够动态触发许多下游作业的父作业。如果上游作业停止,如何杀死下游作业?
我使用python代码生成要触发的作业列表,将其写入属性文件,使用EnvInject插件注入文件,然后使用作业列表变量(逗号分隔)变量的“参数化触发器插件”发起工作(如果有人知道这样做的更简单的方法,我很乐意听到这一点!)。
它的效果很好,除了杀死父作业,触发的作业继续运行,并且我还希望它们在杀死父母时死掉。
有没有插件或方法来实现这个?也许一个工作被杀害时被调用的钩子?
编辑: 对不起,我不清楚我的意思是“杀死”这个工作。我的意思是点击Jenkins gui中的红色'x'按钮,而不是Unix信号。
在此先感谢。
答
而不是杀死工作,有另一项工作,程序化地终止所有必需的工作。您可以重复使用相同的属性文件来知道哪些所有作业被杀死。你可以使用groovy脚本来终止工作。
答
为了赶上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在你的情况中是最明显的。所以这只是一个确定什么信号杀死父母并处理它的问题。
你是如何杀死父母的工作?至少在Linux中可以设置信号处理程序... – aychedee 2013-02-21 18:30:14