在发布阶段覆盖 DevOps 中的手动部署后审批

问题描述 投票:0回答:1

在我工作的公司,我们对每个阶段的部署都使用手动部署后批准,但我们希望能够在某些条件下自动批准部署。通过使用 Devops API 的“发布/批准”服务可以很好地更新批准,但这在阶段内不起作用,因为在阶段完全完成之前不存在批准。

有办法实现这一点吗?

azure-devops azure-pipelines azure-pipelines-release-pipeline
1个回答
0
投票

恐怕没有默认功能可以满足您的需求。作为解决方法,您可以使用 REST API Approvals - Update 创建一个新管道来批准您的阶段,并通过 Webhook 触发此管道。

  1. 创建 Webhook 和“传入 Webhook”服务连接。

    要创建 Webhook,请转到项目设置 -> 服务挂钩。

  • 触发此类事件:发布部署批准待定
  • 发布管道名称:您的目标发布管道
  • 阶段名称:用于部署的阶段
  • 批准类型:部署后

按照YAML 管道的基于通用 Webhook 的触发器中的详细步骤完成以下步骤并创建“传入 Webhook”服务连接。

  1. 创建 yaml 管道来运行 REST API 批准 - 更新以批准您的阶段。
    trigger:
      - none
    
    resources:
      webhooks:
        - webhook: pendingapprove          ### Webhook name
          connection: approveSC    ### Incoming webhook service connection name
    
    pool:
      vmImage: windows-latest
    
    steps:
    - task: PowerShell@2
      inputs:
        targetType: 'inline'
        script: |
          $headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
          $headers.Add("Content-Type", "application/json")
          $headers.Add("Authorization", "Basic {PAT}")
          $url = "https://vsrm.dev.azure.com/{Org name}/{Project name}/_apis/release/approvals/${{parameters.pendingapprove.resource.approval.id}}?api-version=7.1-preview.3"
          $body = @"
          {
          `"status`": `"approved`",
          `"comments`": `"Good to go!`"
          }
          "@
          $response = Invoke-RestMethod -Uri $url -Method 'PATCH' -Headers $headers -Body $body

您可以从

approvalId
获得
parameters.{webhook name}.resource.approval.id

© www.soinside.com 2019 - 2024. All rights reserved.