【问题标题】:Why do build configuration not run in parallel for a build chain in TeamCity?为什么构建配置不为 TeamCity 中的构建链并行运行?
【发布时间】:2017-03-18 19:51:20
【问题描述】:

TeamCity 上关于构建链的所有文档以及他们的博客帖子都涉及简单的设置,不会暴露您在现实生活中可能遇到的更复杂的设置,这让我想到了以下问题。

我需要一些更复杂的设置: A--\ /--D--\ C F B--/ \--E--/ 理想情况下,A & B 和 D & E 将在不同的构建节点上同时运行。 A--\C/--E B--/D\--F 在上面的 A 和 B 运行并发,C 和 D 也是如此,但只有当 A 和 B 都通过时才会触发 C 和 D,E 和 F 也是如此,它们同时运行,但只有 C 和 D 都通过。 /-- B --\ A D \-- C --/ 理想情况下,B & C 应该在不同的节点上并行运行。

但是 TeamCity 拒绝这样做,并且所有构建都在单个构建节点上不按顺序进行,这非常烦人,因为它会浪费构建时间。

我尝试了 Snapshot 依赖项和完成构建触发器的各种组合都无济于事,TeamCity 拒绝并行运行任何步骤。

【问题讨论】:

  • 这出乎意料。您是否可能设置了代理要求,以便将这些都卡在一个代理上?
  • 构建没有代理要求,除了需要安装 Xcode。
  • 您是否至少有 2 个构建代理(节点)连接到服务器?这些节点是否与您的两种并行构建配置兼容?

标签: teamcity build-chain


【解决方案1】:

TC 10.x 中的快照依赖项在模板和构建配置之间的工作方式略有不同。

鉴于此示例配置,在 D 上触发构建将导致 2 个不同的执行树。 /-- B --\ A D \-- C --/

如果在模板上定义了快照依赖项,则 TeamCity 将按顺序执行所有构建,例如。 A、B、C 和 D。

如果在构建配置中定义了快照依赖项,那么 TeamCity 将作为 A 执行构建,然后并行执行 B 和 C,最后是 D。

【讨论】:

    【解决方案2】:

    您应该删除所有“已完成构建”触发器。它们不需要运行快照依赖链。只需在链的最后配置(F 或 D)中启动构建,所有其他构建将根据重用配置添加到队列中。

    【讨论】:

    • 我非常熟悉快照依赖以及它如何用于创建构建链。因此,让我们以我的最后一个示例为例,其中 A -> B 和 C -> D,B 和 C 都依赖于运行 A,我如何防止 TC 顺序排队 B 和 C,而是并行运行它们?如果有 2 个“最后”构建,我如何开始链中的最后一个构建?就像我中间的例子一样?
    • 对于A -> B & C -> D的情况。只要有四个快照依赖项并且没有完成构建触发器,开始D 应该排队ABCBC 并行执行A 完成后(只要兼容的构建代理可用)。如果 TeamCity 有其他行为,那就是一个错误
    猜你喜欢
    • 2014-02-05
    • 1970-01-01
    • 2013-06-25
    • 2016-10-29
    • 1970-01-01
    • 2013-01-04
    • 1970-01-01
    • 2020-06-15
    • 1970-01-01
    相关资源
    最近更新 更多