使用多阶段的Azure DevOps YAML管道批准

时间:2020-03-22 10:53:23

标签: azure-devops azure-pipelines-release-pipeline

我最近尝试将基于UI或Classic的发布管道转换为基于YAML的发布管道。

我们有三个环境,最初CD发行版将很高兴部署到我们的开发环境中。

从那里我们手动触发发布(重新升级)以进行测试,然后在某个时候(如果我们都满意的话)手动升级为正式版。

我们知道我们目前尚不支持在发行阶段之间进行手动升级,但是从我的理解中,我们应该能够通过为每个手动定义环境进行安全检查来做同样的事情要求晋升。

定义安全检查的详细信息在这里:https://docs.microsoft.com/en-us/azure/devops/pipelines/process/approvals?view=azure-devops&tabs=check-pass

此后,我在“测试”和“生产”中都添加了相同的安全检查,但是发布仍会自动进行。

是否存在将这种批准流程映射到新的YAML多阶段版本中的示例?

到目前为止,我已经通过“环境”选项卡上的Approval and checks功能向“测试和生产”环境中添加了一个安全组。

Approvals and checks

1 个答案:

答案 0 :(得分:1)

请检查以下YAML示例:

trigger:
- master

pool:
  vmImage: 'ubuntu-latest'

stages:

  - stage: build   
    jobs:
      - job: buildjob        
        steps:
          - checkout: none
      - deployment: DeployWeb
        pool:
          vmImage: 'Ubuntu-16.04'
        environment: 'Verify'

  - stage: deploy
    jobs:
      - deployment: DeployWeb
        displayName: deploy Web App
        pool:
          vmImage: 'Ubuntu-16.04'
        environment: 'Verify'
        strategy:
          # default deployment strategy, more coming...
          runOnce:
            deploy:
              steps:
              - script: echo my first deployment

在我的场景中,我有一个环境名称Verify,并为其添加了Approvals and Checks

要将此Approvals and Checks应用于多阶段管道,您需要确保YAML中已定位相应的环境。

您需要注意的另一件事是,到目前为止,Environment只能作为YAML的deployment job的目标。

换句话说,只有在其中配置-deployment: job的阶段才能与Environment一起使用。此外,将与添加了environment的{​​{1}}一起使用。