我有一个基于YAML的Azure DevOps管道。在该管道中,我有几个阶段,每个阶段代表一个环境的部署。这包括在Azure中配置基础结构,取消部署应用程序以及运行自动验收测试。
工程师可以从多个分支运行手动管道,也可以使master分支触发管道全部并行运行。这意味着环境部署阶段可以跨管道的多个运行实例并行运行。
我想等待一个阶段,使其成为唯一正在运行的实例。使用YAML管道解决此问题的最佳方法是什么?
答案 0 :(得分:2)
您可以为管道中的环境配置独占锁。
这确保在任何给定时间只有一个管道实例可以使用 azure-pipelines.yaml
中使用此环境的阶段。
在 azure-pipelines.yaml
中,您应该使用 environment
作业中的 deployment
字段按名称引用该环境。
以下是名为 staging
的环境的部署示例。
在门户中创建环境时,应在上述步骤中使用相同的名称。
stages:
- stage: Deploy
jobs:
- deployment: DeployStaging
environment: staging
strategy:
runOnce:
deploy:
steps:
- checkout: self
- script: deploy-script.sh
一些额外的资源: