【发布时间】:2016-06-20 23:12:33
【问题描述】:
在我的团队中,我们有一个项目想要进行持续集成式测试。我们的构建大约需要 2 个小时,由“Poll SCM”触发器触发(使用 Perforce 作为服务器),我们有两个构建节点。
目前,如果有人签入更改,一个构建节点将立即启动,但如果签入另一个更改,另一个节点将不会启动,因为它正在等待前一个作业完成。但是,我希望另一个构建节点尽快使用更新的签入开始构建,这样我们就可以最大限度地增加正在发生的连续测试的数量(这样,如果一个构建失败,我们迟早会知道)。
是否有任何简单的方法来配置 Jenkins 作业(针对 Perforce 服务器使用 Poll SCM)以在作业的另一个实例已经运行时不阻塞?
不幸的是,由于项目的性质,不可能简单地将项目分解为多个构建作业,这些作业通过多个从属流水线传输(尽管我想将其更改为以这种方式工作)。
【问题讨论】:
-
您是否尝试过 Jenkins 配置中的“必要时执行并发构建”选项?
-
@tkosinski 我没有,因为这听起来不像我想要实现的目标。 :) 我会试试的,谢谢。
-
@tkosinski 好的,阅读文档听起来这正是我想要的。似乎该选项应该称为“如果可能”,而不是“如果必要”。我也很困惑,因为出于某种原因,它似乎是 YouTrack 插件设置的一部分。随意将其重新发布为答案,以便我接受!
-
如果您的从节点有不同的标签,那么只需将它们包含在
Restrict where this build runs部分中。它将挑选任何节点上的可用执行器。但是如果两个节点具有相同的能力,则给它们相同的标签并在此选项中添加它。 -
@Aditya 奴隶都在同一个标签上。问题是,例如build 1572 将等待 build 1571 完成,即使有可用的备用容量。 tkosinski 的回答解决了这个问题。
标签: jenkins continuous-integration perforce