我有一个父作业,可动态触发许多下游作业。
我使用python代码生成要触发的作业列表,将其写入属性文件,使用EnvInject插件注入文件,然后使用带有作业列表变量(逗号分隔)变量的“参数化触发器插件”启动工作(如果有人知道更简单的方法,我也很乐意听到!)。
除非杀死父作业,触发的作业继续运行,并且在杀死父作业时我希望它们也死掉,所以效果很好。
是否有插件或方法来实现此功能?也许是一个工作被杀的时候被调用的钩子?
编辑: 对不起因为混乱,我不清楚我的意思是“杀死”这份工作。我的意思是点击Jenkins gui中的红色“x”按钮,而不是Unix信号。
提前致谢。
答案 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是最明显的。因此,只需要弄清楚什么信号会杀死父母并处理它。