Sco*_*ang 11 teamcity dependencies triggers build snapshot
在我看来,快照依赖的功能完全取代了TeamCity中完成构建触发器的功能.任何人都可以解释这些方法的效果,如果它们导致不同的链行为?例如,如果我有一个A-> B的构建链
链条在这三种设置之间的实际行为有何不同?
我理解,可以将Snapshot Dependency视为所有依赖项的"AND"操作,而Finished Build Trigger的工作方式类似于dependees中的"OR"操作.但在顺序链的背景下,有什么区别吗?
谢谢,斯科特
小智 12
"快照依赖"和"完成构建"触发器非常不同.一个基本上是"推"操作,而另一个是"拉"操作.
设置1: 如果我有建CONFIGS 一个和乙在那里乙对"已完成构建"触发一个,那么相反的行为是真实的.触发B对A没有影响,但触发A将在B完成后有效触发.
设置2: 如果我具有完全相同的设置但是B具有对A的快照依赖性,那么每当触发B时,A将首先运行,或者至少在运行B之前检查它是否需要运行.如果仅触发A,则不会触发B.
设置3: 设置3略有不同,因为它不依赖于"完成构建"触发器或快照依赖性.它还取决于初始触发器(VCS,预定或其他).例如,如果你有一个VCS触发一个,和乙既有"完成构建"触发器和"快照依赖"的一个,那么你得到有效设置1.行为一将得到对VCS的变化,并引发乙会在A之后触发(使用相同的快照).实际上,如果没有快照设置,则无法保证B将使用与A相同的快照,这可能是也可能不是您想要的.
所以一般来说,当你想要一个"从左到右"的触发过程时,你可以使用BOTH完成的构建触发器和快照依赖关系来保证构建抵押品的神圣性.
另一方面,如果你在B上有初始触发器(VCS或预定或其他)设置,那么"完成构建"触发器有些无效,因为B将始终首先被触发(但不会被运行),然后它将触发所有依赖项并在完成后自动运行.
希望有所帮助.谢谢!
正如您所说,如果配置快照依赖于多个其他配置(Z 快照依赖于 X 和 Y),则存在很大差异。但你对此不感兴趣...
确实,在简单的 A->B 场景中,设置 1 .. 3 接近等效。当然,前提是触发A和B的事件是一对一的(例如A和B都在同一VCS根上触发;或者它们使用不同的VCS根但仅手动触发)。如果这是真的,那么您的 A->B 链就非常简单,并且可以在单个构建配置中实现。
我想到的其他细微差别:
沿链传递参数。
%foo%
在 A 中定义并在 B 中使用 重用它%dep.A.foo%
。这真的很方便,因为您无需担心%foo%
A 和 B 之间的值保持同步。%foo%
(您将在“运行...”对话框中指定该值)。调度。
不同的 VCS 根。
总的来说,我同意快照依赖项(设置 2)的“拉动”性质更具吸引力。如果需要,可与触发器结合使用(设置 3)。