我有一个每晚建立的项目(p1
)。每个星期二,我都希望建立第二个项目(p2
),但只有成功完成p1
。 p2
依赖于p1
的成功构建,因此如果p2
天失败,则不得触发p1
运行。
我能想到这样做的唯一方法是创建两个相同的p1作业p1a
和p1b
:
p1a
每天都在运行,但周二除外p1b
在星期二运行,成功完成后,会触发p2
这有点乱,因为它创建了p1
的多个版本来维护,有自己的构建历史等等......
任何人都知道更好的方法来实现这个目标吗?
答案 0 :(得分:3)
您可以使用Exclusion插件。
p1
作业应按每晚的时间表开始,而不是p2
作业p1
作业应该在仅限星期二的时间表上开始,稍晚于p1
这样,在星期二,当p2
运行时,“资源”已经被p1
使用了。我实际上没有使用过这个插件,因此不确定它是否会导致p2
等待或失败,但如果后者为真,则可以配置p2
以p1
重试失败的构建。 3}}
或者,可以使用this plugin插件。
p2
构建步骤后配置条件构建步骤 (因此,如果构建步骤失败,则永远不会执行。答案 1 :(得分:1)
有一个stack overflow question on Conditional Post build steps可能会引起人们的兴趣。特别是有关conditional post build plugin
的帖子也许使用该插件并使用自定义脚本获取当周的当前日期并验证它是否会解决您的问题
答案 2 :(得分:0)
您可以将两个项目的开始时间设置为相同(p2一分钟左右)。
然后你可以定义一个锁(限制并发构建插件或锁和锁存器),只允许你的一个作业同时运行。
或者,您确实可以使用jobDSL插件或类似的东西创建两个作业。
答案 3 :(得分:0)
我找到了一个相当新的插件,BuildResultTrigger插件。它允许条件构建其他作业的多次成功。它还允许进行调度,因此可以将其设置为轮询其他作业以获得成功条件:https://wiki.jenkins-ci.org/display/JENKINS/BuildResultTrigger+Plugin
一个缺点是它不能被另一个工作“触发”,而只能通过预定的轮询。