TeamCity中快照依赖和完成构建触发器之间有什么区别?

在我看来,快照依赖的功能完全取代了TeamCity中完成构建触发器的功能.任何人都可以解释这些方法效果,如果它们导致不同的链行为?例如,如果我有一个A-> B的构建链

这三种设置之间的链条实际上是否有任何不同?

>设置1:B中A的单个完成构建触发器.
>设置2:B中A的单个快照依赖性.
>设置3:B中定义的A和A快照依赖关系的完成构建触发器.

我知道有人可以将Snapshot Dependency视为所有dependees的“AND”操作,而Finished Build Trigger就像dependees中的“OR”操作一样.但在顺序链的背景下,有什么区别吗?

谢谢,
斯科特

“快照依赖”和“完成构建”触发器非常不同.一个基本上是“推”操作,而另一个是“拉”操作.

设置1:
如果我构建了配置A和B,其中B在A上有一个“完成构建”触发器,则相反的行为是正确的.触发B对A没有影响,但触发A将在B完成后有效触发.

设置2:
如果我具有完全相同的设置但是B对A具有快照依赖性,那么每当触发B时,A将首先运行,或者至少检查它是否需要运行,然后运行B.如果仅触发A,然后B不会被触发.

设置3:
设置3略有不同,因为它不依赖于“完成构建”触发器或快照依赖性.它还取决于初始触发器(VCS,预定或其他).例如,如果A上有VCS触发器,并且B在A上同时具有“完成构建”触发器和“快照依赖性”,那么您将有效地获得安装程序1的行为.将在VCS更改时触发,并且B将在A之后触发(使用相同的快照).实际上,如果没有快照设置,则无法保证B将使用与A相同的快照,这可能是您想要的也可能不是.

所以一般来说,当你想要一个“从左到右”的触发过程时,你可以使用BOTH完成的构建触发器和快照依赖关系来保证构建抵押品的神圣性.

另一方面,如果你在B上设置了初始触发器(VCS或预定或其他),那么“完成构建”触发器有点无效,因为B将始终首先触发(但不会运行),然后它将触发所有依赖项并在完成后自动运行.

希望有所帮助.谢谢!

相关文章

迭代器模式(Iterator)迭代器模式(Iterator)[Cursor]意图...
高性能IO模型浅析服务器端编程经常需要构造高性能的IO模型,...
策略模式(Strategy)策略模式(Strategy)[Policy]意图:定...
访问者模式(Visitor)访问者模式(Visitor)意图:表示一个...
命令模式(Command)命令模式(Command)[Action/Transactio...
生成器模式(Builder)生成器模式(Builder)意图:将一个对...