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

时间:2013-11-06 07:53:34

标签: performance build continuous-integration teamcity

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

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

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

A -> B -> Collate (-> Deploy)
A -> C -> Collate (-> Deploy)

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

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

1 个答案:

答案 0 :(得分:14)

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

  • A:没有触发器或依赖项
  • BCA
  • 上没有触发器,快照依赖项
  • Collate:VCS触发器,BC
  • 上的快照依赖项

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

  • ABCCollate
  • 的一个版本 在AB 之前构建的
  • CB
  • 之前构建的
  • CCollate
  • 全部由VCS中的同一点构建

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

如果不同的版本使用不同的VCS存储库,那么您仍然不应在ABC上设置VCS触发器。而是在Collate的VCS触发器上设置“快照依赖关系中的更改触发器”选项。