在TeamCity中的多个并行构建之后触发后续构建一次

Mik*_*ike 6 performance teamcity continuous-integration build

我们收集了150多个项目,将其重新配置并优化为多个TeamCity配置,并使用多个构建代理,以尝试提高目前以高度顺序方式构建的构建服务器性能.

技术(Web,dotNet,VB6和COM +)和系统架构的混合意味着有各种步骤(配置)现在可以并行运行,但需要在轨道上进一步组合.

这是一个非常简化的依赖场景,但代表了我们遇到的问题....

A -> B -> Collate (-> Deploy)
A -> C -> Collate (-> Deploy)
Run Code Online (Sandbox Code Playgroud)

问题在于,如果对A进行了更改,则会导致B和C都触发,这将导致Collat​​e(和Deploy)步骤运行两次,尽管是A中的常见触发器.正如我所说,这是几乎二十种配置的真实集合的简化和频繁的重建正在影响速度的提高.

任何人都可以提出任何方法,我可以确定B和C都将作为A的结果触发并使Collat​​e步骤等待B和C完成,然后再触发Collat​​e步骤吗?显然,对B或C的更改应该能够独立触发Collat​​e.

Ben*_*ole 14

我是TeamCity的新手,但我相信这就是你所需要的:

  • A:没有触发器或依赖项
  • B并且C:没有触发器,快照依赖A
  • Collate:VCS触发器,快照依赖关系BC

使用该设置,VCS单次推送将导致:

  • 只有一个构建的A,B,CCollate
  • A前建成BC
  • B并且C之前建造Collate
  • 所有这些都是从VCS中的相同点构建的

如果您想在链中传递工件,那么您还需要定义工件依赖项.

如果不同的构建使用不同的VCS存储库,那么您仍然不应该设置VCS触发器A,B并且C; 而是在VCS触发器上设置"触发快照依赖关系中的更改"选项Collate.