快照依赖项配置Teamcity

快照依赖项配置Teamcity,teamcity,teamcity-9.0,Teamcity,Teamcity 9.0,看到多个帖子,比如 而且他们似乎都没有解决我认为是一个非常简单的要求,我不能让我的头周围如何解决 我想在Teamcity中设置以下构建链 DS取决于核心 DS取决于C5 AS取决于DS 插件依赖于DS PluginA依赖于AS 我已经为Core设置了DS的快照依赖关系,我认为Core/C5中的任何更改都应该触发DS重建 同样,PluginA最终应该在对Core的更改上重建,因为它的两个依赖项应该重新触发 然而,这并不像预期的那样有效。构建显示为具有挂起的更改,但需要手动重建才能实际工作 是否还需

看到多个帖子,比如

而且他们似乎都没有解决我认为是一个非常简单的要求,我不能让我的头周围如何解决

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

DS取决于核心 DS取决于C5 AS取决于DS

插件依赖于DS PluginA依赖于AS

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

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

然而,这并不像预期的那样有效。构建显示为具有挂起的更改,但需要手动重建才能实际工作


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

是。对于正向触发(核心->DS),您需要完成构建触发器。快照依赖关系向后工作(您触发DS,DS触发其DEP,即Core和C5)


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

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

如果这是正确的,那么您有两个选择,但在此之前,只需简单回顾一下构建链。构建链以“从右到左”的顺序触发,但实际构建以“从左到右”的顺序运行。这意味着,如果触发了“Core”(例如,定时触发或VCS触发),那么“Core”具有快照依赖关系的所有构建也将被触发。但由于它是链中最左侧的节点,因此不会触发任何其他节点。另一方面,如果“plugina”上有一个触发器,那么快照链中的所有构建都将被触发,从左到右开始,因此“Core”和“C5”将首先并行触发,然后依次触发“DS”和“AS”,最后触发“plugina”。因此,您的选择如下:

  • 在“DS”、“AS”和“Plugin A”构建中添加“Finished Build”触发器,以适合您所寻找的确切行为
  • “反转”你的触发逻辑。这并不是一个确切的“反转”,但你必须这样想才能让它有意义。基本上,您可以将“DS”、“AS”和/或“plugina”作为“触发器”构建,具体取决于上下文。正确设置依赖链后,构建将以正确的顺序进行。例如,如果您在“AS”中设置了一个“VCS触发器”,该触发器指向与“Core”和/或“C5”相同的VCS根,那么当更改提交到这些回购协议中的任何一个时,将触发“AS”,这将反过来触发其所有依赖项,并且每个依赖项将根据需要触发其自身的依赖项
    因此,您必须考虑您想要的确切行为,以及您想要该行为发生的上下文,然后相应地设置您的链(和触发器)

    非常感谢您提供的非常有用的图表和说明!我最终选择了成品构建触发器,因为它更适合上下文。