在我工作的公司,我们对每个阶段的部署都使用手动部署后批准,但我们希望能够在某些条件下自动批准部署。通过使用 Devops API 的“发布/批准”服务可以很好地更新批准,但这在阶段内不起作用,因为在阶段完全完成之前不存在批准。
有办法实现这一点吗?
恐怕没有默认功能可以满足您的需求。作为解决方法,您可以使用 REST API Approvals - Update 创建一个新管道来批准您的阶段,并通过 Webhook 触发此管道。
创建 Webhook 和“传入 Webhook”服务连接。
要创建 Webhook,请转到项目设置 -> 服务挂钩。
按照YAML 管道的基于通用 Webhook 的触发器中的详细步骤完成以下步骤并创建“传入 Webhook”服务连接。
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
。