【问题标题】:Trigger subsequent build once after multiple parallel builds in TeamCity在 TeamCity 中多次并行构建后触发后续构建
【发布时间】:2013-12-13 00:30:07
【问题描述】:

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

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

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

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

问题在于,如果对 A 进行更改,将导致 B 和 C 都触发,这将导致整理(和部署)步骤运行两次,尽管在 A 中是一个常见的触发器。正如我所说,这是对近 20 种实际配置的简化,频繁的重建影响了速度的提高。

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

【问题讨论】:

  • 很难说不知道您当前使用的是什么触发器 - A、B 和 C 上的触发器是什么?
  • VCS 从 TFS 为 A、B 和 C 触发,并为前面的步骤完成构建,因此 B 将在 A 完成构建时触发(C 也将触发),然后整理将在 B 或 C 完成构建时触发。
  • 您目前有哪些触发器(快照和人工制品)?
  • @psych 对不起,我不明白你在问什么,我还没有在原始的“简化依赖场景”和我之前的评论中提供。工件从 A 到 B 和 C,然后到 Collat​​e,VCS 触发器。
  • 对不起,我的评论毫无意义。我的意思是说您设置的依赖项不是触发器。

标签: performance build continuous-integration teamcity


【解决方案1】:

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

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

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

  • 恰好是ABCCollate 的一个版本
  • ABC 之前构建
  • BCCollate 之前构建
  • 全部从 VCS 中的同一点构建

如果您想将工件沿链向下传递,那么您还需要定义工件依赖项。

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

【讨论】:

  • 那么您似乎是在说让依赖项强制构建早期步骤,而不是触发器?有趣的是,我得试一试,我会让你知道我的进展如何。谢谢。
  • 是的,没错。 TeamCity 希望您告诉它您想要的最终结果——它会负责确定需要触发哪些其他构建来获得结果。
  • 甜心。这很好用!由于真实场景的复杂性,我还有一些怪癖需要解决,而不是上面的简化版,但它似乎更好地优化了构建。干杯伙伴。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-10-09
  • 1970-01-01
  • 2016-12-24
  • 1970-01-01
  • 2016-09-13
  • 1970-01-01
  • 2021-12-12
相关资源
最近更新 更多