在我看来,快照依赖的功能完全取代了TeamCity中完成构建触发器的功能.任何人都可以解释这些方法的效果,如果它们导致不同的链行为?例如,如果我有一个A-> B的构建链
这三种设置之间的链条实际上是否有任何不同?
>设置1:B中A的单个完成构建触发器.
>设置2:B中A的单个快照依赖性.
>设置3:B中定义的A和A快照依赖关系的完成构建触发器.
我知道有人可以将Snapshot Dependency视为所有dependees的“AND”操作,而Finished Build Trigger就像dependees中的“OR”操作一样.但在顺序链的背景下,有什么区别吗?
谢谢,
斯科特
“快照依赖”和“完成构建”触发器非常不同.一个基本上是“推”操作,而另一个是“拉”操作.
原文链接:https://www.f2er.com/javaschema/282055.html设置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将始终首先触发(但不会运行),然后它将触发所有依赖项并在完成后自动运行.
希望有所帮助.谢谢!