TeamCity如何防止同时构建不同分支?

19

我有一个典型的主-->开发-->特性结构的Git设置。 我有5个TeamCity(v8.1)构建代理。 是否可以配置TeamCity,以便如果多个人同时提交到开发分支,则开发分支不会运行并发构建? 我们CI流程的一部分是成功部署,因此我不希望两个构建同时部署到同一端点。

(我想要这样的设置适用于所有分支,而不仅仅是开发分支)

3个回答

18

在“常规设置”配置页面中,您可以将同时构建的数量从无限制更改为1。这意味着它可以排队等待5个构建,但只有一个会同时运行。


是的,我知道这个。但是,这不会削弱多个构建代理的有用性吗?还是我误解了这个选项的工作方式...它只限制每个配置一个构建,还是每个分支一个构建? - Matt
2
每个配置只能构建一次。据我所知,没有办法将其限制为每个分支只构建一次。如果您愿意,您的CI构建可以仅发布工件而不是部署,这样同时构建的数量就可以为0(无限制)。然后创建一个部署构建,使用这些工件(我相信设置拉取来自同一链),每次限制为1次构建。这会给您提供一种折中方案。 - Welsh

8
您是否试图防止对同一分支进行多次检查,从而生成该分支的多个构建?您可以通过在构建配置的VCS触发器部分设置一些选项来实现此目的,而无需更改并发设置。有一个“静默期”设置,在进行构建之前等待X秒钟,以防同时进行多个提交。

以下是TeamCity 8.x中相关菜单的屏幕截图:

Screenshot of the TeamCity menu for configuration the quiet period on a build configuration.

编辑:另一个选择是构建功能->共享资源功能。这允许您创建锁定,将其与一个或多个项目关联,并使它们使用它。这对于防止1个或多个项目同时构建很有用。这比安静时间特性更可靠,因为有一个实际的锁定而不仅仅是延迟,尽管安静时间确实有助于收集多个几乎同时的检入,因此独立有用。


2
共享资源功能带来胜利。 - Colin Banbury

1

结合足够长但不过长的静默期和同时最多构建1个版本,您应该能够获得所需的结果。这是我们这里使用的方法,静默期为120至180秒,效果很好。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接