问题描述
我在使用多级管道时遇到问题。假设我有管道 A 和管道 B。
流水线A如下:
- A.1 阶段
- A.2 阶段
流水线B如下:
- B.1 阶段
- B.2 阶段
这些管道适用于放置在不同存储库中的不同触发器。
有时我们有以下行为:
- 管道 A 开始阶段 A.1
- 然后,在流水线 A 开始阶段 A.2 之前,流水线 B 由于其触发而启动并开始阶段 B.1(请注意流水线 A 和 B 完全相互独立)
- 只有在 B.1 完成后,管道 A 才能在 A.2 上继续
我不抱怨顺序行为,我不想要并行运行。但我想告诉 Azure DevOps 在开始另一个管道之前先完成它。
总而言之,您能告诉 Azure DevOps 在启动另一个管道之前完成多阶段管道吗?我不是在谈论同一管道的另一个实例,而是在谈论一个完全不同的管道。
解决方法
这似乎是排他锁的一个用例。您可以在 Azure 管道中为每个管道创建一个环境(环境 A 和环境 B),然后在这两个环境上应用独占锁定策略。因此,您将相同锁应用于两个环境,而不是两个单独的锁。
更多信息: