如何中止另一个詹金斯的工作?

时间:2015-05-04 11:35:52

标签: jenkins triggers jobs abort

我有两个Jenkins工作,COMPILE和TEST,COMPILE触发TEST,COMPILE很快,TEST很慢。 COMPILE重新创建TEST使用的数据,因此如果COMPEST在TEST运行时运行,由于必要的数据暂时不可用或不完整,TEST可能会失败。

有时,COMPILE会被触发很多(通过CMS,繁忙的开发)。标准方法是通过锁同步COMPILE和TEST,这样两者都不会同时运行,而是在开始之前等待另一个完成。这种等待并不适合我,因为它过多地延迟了COMPILE工作。

另一种方法可能是将TEST转为并发运行,但在我的情况下,TEST需要太多资源才能同时运行。

所以我现在的方法是配置COMPILE,使其首先中止正在运行的TEST作业(如果一个正在运行),然后开始工作(最终再次触发TEST)。几个快速执行COMPILE构建然后每个将启动一个TEST构建,将全部中止(灰色气泡)。只完成最后一次TEST构建,并显示一个体面的红色或绿色(或黄色)气泡。但在我的情况下这就足够了(我接受这种方式的缺点,我无法准确地检测到哪个提交破坏了构建)。

现在问题是:如何让COMPILE中止TEST构建? (最好以优雅的方式。)

我只找到了generally abort a job from the outside using Jenkins's REST interface的方法,但这似乎并不优雅。是否有更优雅的方式,可能使用我不知道的Jenkins内部功能,或者使用合适的插件?

2 个答案:

答案 0 :(得分:0)

我建议将这两份工作合并为一份工作。这将允许多个同时执行,并且如果编译失败仍将失败。

答案 1 :(得分:0)

您可以将节点的执行程序数设置为“ 1”。这样,我们可以确保节点中一次仅运行一个作业,即使并行执行它也将等待第一个作业完成,然后启动第二个