我们已经收集了150多个项目,通过多个构建代理将它们重新配置和优化为多个TeamCity配置,以尝试改善当前以高度顺序的方式构建的构建服务器的性能。
技术(Web,dotNet,VB6和COM +)和系统体系结构的结合意味着存在多个步骤(配置),这些步骤现在可以并行运行,但需要进一步整合。
这是一个非常简化的依赖方案,但是代表了我们遇到的问题。
A -> B -> Collate (-> Deploy)
A -> C -> Collate (-> Deploy)
问题是,如果对A进行更改,则将导致B和C都被触发,这将导致Collate(和Deploy)步骤运行两次,尽管这是A中的常见触发。简化了将近二十种配置的实际设置,以及频繁的改造正在影响速度的提高。
谁能建议我以某种方式确定B和C都会由于A而被触发的事实,并使Collate步骤在触发Collate步骤之前等待B和C都完成吗?显然,对B或C的更改应该能够独立触发整理。
最佳答案
我是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触发器;相反,您可以在VCS触发器上为Collate
设置“在快照依赖项上的更改时触发”选项。
关于performance - 在TeamCity中进行多次并行构建后触发一次后续构建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19806689/