Azure DevOps 发布管道配置:多环境部署与手动审批流程

在Azure DevOps中,发布管道用于自动化应用程序的部署过程。支持多环境部署(如开发、测试、生产环境)和手动审批流程,可以确保部署的安全性和质量控制。手动审批允许在关键阶段(如从测试环境升级到生产环境)由指定人员审核和批准部署,避免意外错误。下面我将逐步解释如何配置,基于Azure DevOps的经典UI(图形界面),因为它更直观易用。所有步骤都基于官方文档和最佳实践,确保真实可靠。

步骤1: 创建基本发布管道

首先,在Azure DevOps项目中创建一个新的发布管道。这定义了部署的整体流程。

  • 登录Azure DevOps门户,导航到“Pipelines” > “Releases”。
  • 点击“New pipeline”或“New release pipeline”。
  • 选择“Empty job”作为模板,开始自定义配置。
  • 添加“Artifact”(工件),例如连接到你的构建管道输出(如Docker镜像或代码包)。这确保了部署源可靠。
步骤2: 添加多个环境(阶段)

多环境部署通过添加多个“Stages”(阶段)来实现,每个阶段对应一个环境(如Dev、Test、Prod)。环境之间可以顺序执行,确保部署逐步推进。

  • 在发布管道编辑器中,点击“Add stage”按钮。
  • 为每个环境创建独立阶段:
    • Dev环境:命名为“Dev-Deploy”,用于开发环境部署。
    • Test环境:命名为“Test-Deploy”,用于测试环境部署。
    • Prod环境:命名为“Prod-Deploy”,用于生产环境部署。
  • 配置每个阶段的部署任务:
    • 在阶段属性中,设置“Deployment job”(部署作业),添加任务如“Azure App Service deploy”或“Kubernetes manifest deploy”,具体取决于你的应用类型。
    • 例如,在Dev环境中,可以添加任务来自动部署到Azure Web App;在Prod环境中,添加更严格的健康检查。
步骤3: 配置手动审批流程

手动审批确保在部署到敏感环境(如生产)前,必须由授权人员批准。这通过在每个阶段前添加“Pre-deployment approvals”来实现。

  • 启用审批
    • 在发布管道编辑器中,选择目标阶段(如“Prod-Deploy”)。
    • 在阶段属性中,点击“Pre-deployment conditions”图标(闪电符号)。
    • 在“Pre-deployment approvals”部分,勾选“Enable approvals”。
    • 指定“Approvers”(审批者):输入用户或组名(如“Project Administrators”),并设置“Timeout”(超时时间,如24小时)。
  • 定制审批规则
    • 可选:启用“Require all approvers”以确保所有指定人员都批准。
    • 添加“Instructions for approvers”:提供审批说明,如“请验证测试报告后再批准”。
  • 应用到其他环境:重复上述步骤,为其他关键环境(如Test到Prod的过渡)添加审批。例如:
    • 在Test环境后添加Prod环境,并在Prod阶段设置审批。
示例YAML配置(可选参考)

虽然经典UI更适合审批配置,但Azure DevOps也支持YAML定义基础管道。以下是一个简单YAML示例,展示多阶段结构(审批需通过UI添加,因为YAML不支持直接定义审批)。保存为.yml文件并导入到发布管道中。

trigger: none  # 手动触发发布

stages:
- stage: Dev_Deploy
  displayName: 'Dev Environment Deployment'
  jobs:
  - deployment: Deploy_Dev
    environment: 'dev-env'  # 引用Azure DevOps环境
    strategy:
      runOnce:
        deploy:
          steps:
          - task: AzureWebApp@1
            inputs:
              azureSubscription: 'your-subscription'
              appName: 'dev-webapp'
              package: '$(Pipeline.Workspace)/**/*.zip'

- stage: Test_Deploy
  displayName: 'Test Environment Deployment'
  dependsOn: Dev_Deploy  # 依赖Dev阶段完成
  jobs:
  - deployment: Deploy_Test
    environment: 'test-env'
    strategy:
      runOnce:
        deploy:
          steps:
          - task: AzureWebApp@1
            inputs:
              azureSubscription: 'your-subscription'
              appName: 'test-webapp'
              package: '$(Pipeline.Workspace)/**/*.zip'

- stage: Prod_Deploy
  displayName: 'Prod Environment Deployment'
  dependsOn: Test_Deploy  # 依赖Test阶段完成
  jobs:
  - deployment: Deploy_Prod
    environment: 'prod-env'
    strategy:
      runOnce:
        deploy:
          steps:
          - task: AzureWebApp@1
            inputs:
              azureSubscription: 'your-subscription'
              appName: 'prod-webapp'
              package: '$(Pipeline.Workspace)/**/*.zip'

注意:在YAML中定义环境后,需在Azure DevOps门户中手动为prod-env环境添加审批(通过“Environments”设置)。

测试和验证
  • 测试配置:创建测试发布,模拟部署流程。检查审批是否触发:当部署到达Prod阶段时,Azure DevOps会发送通知邮件,审批者可以在门户中批准或拒绝。
  • 最佳实践
    • 使用“Deployment Gates”(部署门)结合审批,如集成Azure Monitor检查应用健康。
    • 为每个环境设置变量(如数据库连接字符串),确保隔离性。
    • 监控日志:在“Releases”视图查看部署历史和审批记录。
总结

通过配置多环境部署和手动审批,你可以提升部署的可靠性和安全性。例如,开发环境自动部署加速迭代,生产环境手动审批减少风险。Azure DevOps的灵活性支持各种场景,如有问题,参考官方文档或社区论坛。定期审查审批规则,以适应团队变化。

更多推荐