我们收集了150多个项目,我们将这些项目重新组合并优化为多个TeamCity配置,并配有多个构建代理,以尝试提高目前以高度顺序方式构建的构建服务器性能。
技术组合(Web,dotNet,VB6和COM +)和系统架构意味着有各种步骤(配置)现在可以并行运行,但需要在轨道上进一步合并。
这是一个非常简化的依赖方案,但代表了我们遇到的问题......
A -> B -> Collate (-> Deploy)
A -> C -> Collate (-> Deploy)
问题在于,如果对A进行了更改,则会导致B和C都触发,这将导致Collate(和Deploy)步骤运行两次,尽管是A中的常见触发器。正如我所说,这是近二十种配置的真实集合的简化,频繁的重建正在影响速度的提升。
任何人都可以提出任何方法,我可以确定B和C都将作为A的结果触发并使Collate步骤等待B和C完成,然后再触发Collate步骤吗?显然,对B或C的更改应该能够独立触发Collate。
答案 0 :(得分:14)
我是TeamCity的新手,但我相信这就是你所需要的:
A
:没有触发器或依赖项B
和C
:A
Collate
:VCS触发器,B
和C
使用该设置,VCS单次推送将导致:
A
,B
,C
和Collate
A
和B
之前构建的C
在B
C
和Collate
如果您想在链中传递工件,那么您还需要定义工件依赖关系。
如果不同的版本使用不同的VCS存储库,那么您仍然不应在A
,B
和C
上设置VCS触发器。而是在Collate
的VCS触发器上设置“快照依赖关系中的更改触发器”选项。