流水线锁定:确保在同一时间只能运行一个GoCD流水线实例
有时您需要确保同一时间只有一个流水线实例可以运行。如果流水线的各个阶段相互关联,这一点非常重要。例如,第一个阶段可能设置了一个环境,该环境将被流水线中的下一个阶段使用。
如果一个流水线被锁定,GoCD将不会允许该流水线的其他实例在当前运行的实例完成之前被调度。
要通过配置UI启用锁定,请导航到流水线的Pipeline Settings部分。有三种锁定选项:
选项1:每次仅运行流水线的一个实例(“锁定行为:完成后解锁”)
此选项通过临时锁定流水线并在完成后解锁,来确保一次仅运行流水线的一个实例。当流水线完成时,无论是由于任何阶段失败还是最后一个阶段成功,流水线都会自动解锁。如果流水线到达手动阶段,也会解锁。
选项2:运行单个流水线实例并在失败时锁定(“锁定行为:失败时锁定”)
此选项确保一次仅运行流水线的一个实例。流水线开始时被锁定,如果失败则保持锁定状态。如果流水线到达最后一个阶段(即使失败),它才会解锁。如果流水线到达手动阶段,则不会解锁。如果流水线被锁定,除非手动或通过API解锁,否则不允许任何新实例运行。通过API.
选项3:运行多个实例(“锁定行为:无”)
这是默认行为。多个流水线实例可以同时运行。
从配置XML控制锁定行为
要从Config XML启用锁定,请将lockBehavior
属性设置为以下之一unlockWhenFinished
, lockOnFailure
或none
,对应于上述显示的三个选项:
<pipeline name="my-locked-pipeline" lockBehavior="lockOnFailure">
<materials>
...
</materials>
<stages>
...
</stages>
</pipeline>
也可参见配置参考.