我有两个Jenkins作业,COMPILE和TEST,COMPILE触发器测试,COMPILE很快,测试很慢。 COMPILE重新创建TEST使用的数据,因此如果COMPILE在TEST运行时运行,TEST可能会因必要的数据暂时不可用或不完整而失败。如何终止另一个Jenkins作业?
有时,COMPILE会被触发很多(通过CMS,繁忙的开发)。标准的方法是通过一个锁来同步COMPILE和TEST,这样就不会同时运行,而是等待另一个在启动之前完成。这种等待并不适合我,因为它会延迟COMPILE作业太多。
另一种可能是将TEST转为并发运行,但在我的情况下,TEST需要太多资源才能同时运行。因此,我现在的方法是配置COMPILE,使其首先中止正在运行的TEST作业(如果正在运行),然后开始工作(最终再次触发TEST)。几个很快执行的COMPILE构建将会开始一个TEST构建,这将全部中止(灰色泡泡)。只有最后一个测试版本才会完成,并显示正常的红色或绿色(或黄色)泡泡。但对我而言,这已经足够了(我接受这样一个缺点,即我无法准确检测到哪个提交违反了构建)。
现在的问题是:我如何使COMPILE中止测试版本? (最好以一种优雅的方式。)
我只找到了一种方式generally abort a job from the outside using Jenkins's REST interface,但这似乎不是很优雅。有没有更优雅的方式,也许使用我不知道的Jenkins内部功能,或者使用合适的插件?
您可以通过Groovy API取消作业。 这里参见例如:[取消排队构建并中止执行使用Groovy詹金斯构建] [1] [1]:http://stackoverflow.com/questions/12305244/cancel-queued-builds-然后放弃执行构建使用groovy-for-jenkins – Owbea