快照依赖关系配置Teamcity

时间:2016-01-03 13:05:17

标签: teamcity teamcity-9.0

查看多个帖子,例如TeamCity show changes from snapshot dependenciesTeamCity show changes from snapshot dependencieshttps://stackoverflow.com/questions/9366791/trigger-on-changes-in-snapshot-dependencies-does-not-seem-to-work-properly?rq=1,https://stackoverflow.com/questions/9982496/snapshot-dependency-dont-run-pending-changes-on-dependencies?rq=1

并且它们似乎都没有解决我认为是一个非常简单的要求,我无法理解如何解决。

我想在Teamcity中设置以下构建链

DS取决于Core DS取决于C5 AS取决于DS

PluginA依赖于DS PluginA依赖于AS

我已经在DS for Core上设置了快照依赖关系,C5认为Core / C5中的任何更改都应该触发DS重建?

同样,PluginA应该在对Core更改时重建,因为它的两个依赖项应该重新触发?

但是这没有按预期工作。构建显示为具有挂起的更改,但需要手动重建才能实际工作。

我是否还需要为每个快照依赖项配置完成构建触发器?

2 个答案:

答案 0 :(得分:2)

如果我理解您的描述,下图是您设置的流程。

ChainDiagram

如果这是正确的,那么你有两个选择,但在此之前,只需快速回顾一下Build Chains。构建链以“从右向左”的顺序触发,但实际构建以“从左到右”的顺序运行。这意味着如果触发“核心”(例如,调度或VCS触发),则还将触发“核心”具有快照依赖性的所有构建。但由于它是链中最左边的节点,因此没有其他任何东西被触发。另一方面,如果你在“插件A”上有一个触发器,那么快照链中的所有构建都将从左到右触发,因此“Core”和“C5”将首先并行触发,然后是“DS”和“AS”顺序然后最后“插件A”。所以,您的选择如下:

  1. 将“完成构建”触发器添加到“DS”,“AS”和“插件A”构建中,以适合您正在寻找的确切行为。
  2. “反转”您的触发逻辑。这不是一个确切的“逆转”,但你必须要考虑它才有意义。基本上,您可以将“DS”,“AS”和/或“插件A”作为“触发器”构建,这取决于上下文。通过正确设置依赖关系链,您的构建将按正确的顺序进行。例如,如果在“AS”中设置“VCS触发器”,该“VCS触发器”指向与“Core”和/或“C5”相同的VCS根,则当更改提交到这些repos中的任何一个时,“AS”将被触发,这将依次触发它的所有依赖项,每个依赖项将根据需要触发自己的依赖项。
  3. 因此,您必须考虑所需的确切行为,以及您希望该行为发生的上下文,然后相应地设置您的链(和触发器)。

答案 1 :(得分:1)

是。要触发转发(Core - > DS),您需要完成构建触发器。快照依赖性向后工作(触发DS,触发其代表,即Core& C5)。

并行设置快照依赖项和完成构建触发器是很常见的。阅读更多here