【发布时间】:2021-05-29 06:14:16
【问题描述】:
我们有十几个多级 YAML 管道负责部署微服务。它们中的每一个都有一个阶段 A,它以启用了独占锁的 EnvA 环境为目标。
独占锁向我们保证了两件事:
- 只能执行来自每个管道的最新运行(批处理行为)
- 所有管道中只有一个运行可以同时使用 EnvA 环境,其他正在等待环境空闲时
环境还具有 Azure 功能检查,可验证一天中的时间并允许或禁止部署。这意味着例如,Azure Function 允许在 8.00 - 10.00 和 14:00 - 16:00 之间进行部署。
有关此功能的唯一文档是 排他锁检查只允许管道中的一次运行继续进行。该管道的所有运行中使用该资源的所有阶段都将暂停。当使用锁的阶段完成时,另一个阶段可以继续使用该资源。此外,只允许继续一个阶段。任何其他试图获取锁定的阶段都将被取消。 Exclusive lock
没有关于排他锁超时如何工作的任何信息:
它是阶段可以占用 EnvA 环境的最长时间吗?例如,如果超时设置为 10 分钟,但阶段的作业需要 20 分钟,那么在 10 分钟后,锁被释放,下一个管道可以使用这个环境,即使上一个还在进行中吗?
超时开始时,特定管道的阶段何时锁定环境?或者当管道阶段开始并在队列中等待管道 A、B、C、D 释放 EnvA 环境时?
独占锁、已获取、已获取的状态是什么?如何跟踪等待其他管道释放锁的管道队列?
【问题讨论】:
标签: azure-devops azure-pipelines