如何同步Azure DevOps管道阶段的运行?

时间:2020-04-08 08:54:51

标签: azure-devops continuous-integration yaml

我有一个基于YAML的Azure DevOps管道。在该管道中,我有几个阶段,每个阶段代表一个环境的部署。这包括在Azure中配置基础结构,取消部署应用程序以及运行自动验收测试。

工程师可以从多个分支运行手动管道,也可以使master分支触发管道全部并行运行。这意味着环境部署阶段可以跨管道的多个运行实例并行运行。

我想等待一个阶段,使其成为唯一正在运行的实例。使用YAML管道解决此问题的最佳方法是什么?

1 个答案:

答案 0 :(得分:2)

您可以为管道中的环境配置独占锁。

  1. 转到 Azure DevOps > 您的组织 > 您的项目 > 管道 > 环境
  2. 选择一个环境(或创建一个)来同步部署
  3. 右上角有一个下拉菜单,转到“批准和检查”
  4. 再次在右上角有一个大加号按钮,点击它并选择“独占锁定”

这确保在任何给定时间只有一个管道实例可以使用 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

一些额外的资源: