快照依赖配置Teamcity
Snapshot Dependency configuration Teamcity
看到多个帖子,例如 , ,
和 none 他们似乎解决了我认为是一个非常简单的要求,我无法解决如何解决。
我想在 Teamcity 中设置以下构建链
DS 依赖于 Core
DS 依赖于 C5
AS 依赖于 DS
PluginA 依赖于 DS
PluginA 依赖于 AS
我已经为 Core,C5 设置了对 DS 的快照依赖,认为 Core/C5 中的任何更改都应该触发 DS 重建?
同样,PluginA 最终应该根据对 Core 的更改进行重建,因为它的两个依赖项应该重新触发?
然而,这没有按预期工作。构建显示为有待定更改,但需要手动重建才能实际工作。
我是否还需要为每个快照依赖项配置完成构建触发器?
是的。要向前触发(Core -> DS),您需要完成构建触发器。快照依赖项向后工作(你触发 DS,它触发它的依赖项,即 Core 和 C5)。
并行设置快照依赖项和完成的构建触发器是很常见的。阅读更多 here.
如果我理解你的描述,下图就是你设置的流程。
如果这是正确的,那么您有两个选择,但在此之前,只需快速回顾一下构建链。构建链在 "right-to-left" 顺序中 触发 ,但实际构建在 [=30] 中 运行 =] 命令。这意味着如果 "Core" 被触发(例如计划或 VCS 触发),那么 "Core" 具有快照依赖项的所有构建也将被触发。但是因为它是链中的 left-most 节点,所以不会触发其他任何东西。另一方面,如果你在 "Plugin A" 上有一个触发器,那么快照链中的所有构建都将被触发,从左到右开始,因此 "Core" 和 "C5" 将被触发首先并行,然后依次是 "DS" 和 "AS",最后是 "Plugin A"。因此,您的选择如下:
- 将 "Finished Build" 触发器添加到 "DS"、"AS" 和 "Plugin A" 构建中,以适合您正在寻找的确切行为。
- "Reverse" 你的触发逻辑。这不是一个确切的 "reversal",但您必须像那样考虑它才能使它有意义。基本上,可以说 "DS"、"AS"、and/or "Plugin A" 是 "trigger" 构建,具体取决于上下文。正确设置依赖链后,您的构建将以正确的顺序进行。例如,如果您在 "AS" 中设置一个 "VCS trigger" 指向与 "Core" and/or "C5" 相同的 VCS 根目录,那么当提交更改时这些回购协议中的任何一个 "AS" 都会被触发,这又会触发它的所有依赖项,并且每个依赖项都会根据需要触发自己的依赖项。
所以你必须考虑你想要的确切行为,以及你希望该行为发生的上下文,然后相应地设置你的链(和触发器)。
看到多个帖子,例如
和 none 他们似乎解决了我认为是一个非常简单的要求,我无法解决如何解决。
我想在 Teamcity 中设置以下构建链
DS 依赖于 Core DS 依赖于 C5 AS 依赖于 DS
PluginA 依赖于 DS PluginA 依赖于 AS
我已经为 Core,C5 设置了对 DS 的快照依赖,认为 Core/C5 中的任何更改都应该触发 DS 重建?
同样,PluginA 最终应该根据对 Core 的更改进行重建,因为它的两个依赖项应该重新触发?
然而,这没有按预期工作。构建显示为有待定更改,但需要手动重建才能实际工作。
我是否还需要为每个快照依赖项配置完成构建触发器?
是的。要向前触发(Core -> DS),您需要完成构建触发器。快照依赖项向后工作(你触发 DS,它触发它的依赖项,即 Core 和 C5)。
并行设置快照依赖项和完成的构建触发器是很常见的。阅读更多 here.
如果我理解你的描述,下图就是你设置的流程。
如果这是正确的,那么您有两个选择,但在此之前,只需快速回顾一下构建链。构建链在 "right-to-left" 顺序中 触发 ,但实际构建在 [=30] 中 运行 =] 命令。这意味着如果 "Core" 被触发(例如计划或 VCS 触发),那么 "Core" 具有快照依赖项的所有构建也将被触发。但是因为它是链中的 left-most 节点,所以不会触发其他任何东西。另一方面,如果你在 "Plugin A" 上有一个触发器,那么快照链中的所有构建都将被触发,从左到右开始,因此 "Core" 和 "C5" 将被触发首先并行,然后依次是 "DS" 和 "AS",最后是 "Plugin A"。因此,您的选择如下:
- 将 "Finished Build" 触发器添加到 "DS"、"AS" 和 "Plugin A" 构建中,以适合您正在寻找的确切行为。
- "Reverse" 你的触发逻辑。这不是一个确切的 "reversal",但您必须像那样考虑它才能使它有意义。基本上,可以说 "DS"、"AS"、and/or "Plugin A" 是 "trigger" 构建,具体取决于上下文。正确设置依赖链后,您的构建将以正确的顺序进行。例如,如果您在 "AS" 中设置一个 "VCS trigger" 指向与 "Core" and/or "C5" 相同的 VCS 根目录,那么当提交更改时这些回购协议中的任何一个 "AS" 都会被触发,这又会触发它的所有依赖项,并且每个依赖项都会根据需要触发自己的依赖项。
所以你必须考虑你想要的确切行为,以及你希望该行为发生的上下文,然后相应地设置你的链(和触发器)。