Jenkins / Hudson:如何在构建另一个项目后定期构建

时间:2014-03-21 15:07:35

标签: jenkins hudson

我有一个每晚建立的项目(p1)。每个星期二,我都希望建立第二个项目(p2),但只有成功完成p1p2依赖于p1的成功构建,因此如果p2天失败,则不得触发p1运行。

我能想到这样做的唯一方法是创建两个相同的p1作业p1ap1b

  • p1a每天都在运行,但周二除外
  • p1b在星期二运行,成功完成后,会触发p2

这有点乱,因为它创建了p1的多个版本来维护,有自己的构建历史等等......

任何人都知道更好的方法来实现这个目标吗?

4 个答案:

答案 0 :(得分:3)

您可以使用Exclusion插件。

  • 为两个作业设置相同的“resource”字符串(有关详细信息,请阅读插件页面)
  • p1作业应按每晚的时间表开始,而不是p2作业
  • p1作业应该在仅限星期二的时间表上开始,稍晚于p1

这样,在星期二,当p2运行时,“资源”已经被p1使用了。我实际上没有使用过这个插件,因此不确定它是否会导致p2等待或失败,但如果后者为真,则可以配置p2p1重试失败的构建。 3}}

或者,可以使用this plugin插件。

  • p2 构建步骤后配置条件构建步骤 (因此,如果构建步骤失败,则永远不会执行。
  • 它使用Conditional Build Step插件,可以选择星期几作为条件。选择 Tuesday
  • 然后使用Run Condition在其他项目上添加触发/调用构建构建步骤,该步骤将触发{{1}}

答案 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

一个缺点是它不能被另一个工作“触发”,而只能通过预定的轮询。