当有新版本可用时,如何自动取消正在等待 POST-DEPLOYMENT 批准的版本?
How do I automatically cancel a release that is waiting on a POST-DEPLOYMENT approval when there is a new release available?
我了解如何为有待批准的预部署批准的版本执行此操作。它在部署前条件>部署队列设置>后续发布>部署最新并取消其他。并且有很多现有的 Whosebug post 询问如何为预部署批准执行此操作。但是似乎没有 POST-DEPLOYMENT.
我们当前的工作流程包括将发布部署到我们的 QA 环境,然后在发布移至 PROD 环境之前等待 QA 团队的 post 部署批准。
但随着 QA 团队发现错误并得到解决,QA 中的版本需要更换。目前唯一的方法是手动取消当前正在等待 post 部署批准的版本,以便可以部署最新版本。
这变得非常乏味,因为我必须自己跟踪并手动完成所有操作。没有办法自动化吗?
你可以参考这张工单:
选项:Deploy latest and cancel others
仅支持 PRE-DEPLOYMENT approval pending。
Is there no way to automate this?
您可以将发布管道阶段的 PowerShell 任务添加到 运行 以下 Rest API 到 get the Release (Pending on POST-DEPLOYMENT Approval) and cancel the release。
这是 PowerShell 示例:
$token = "PAT"
$url=" https://vsrm.dev.azure.com/{ORG}/{PROJECT}/_apis/release/deployments?api-version=6.0"
$token = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($token)"))
$response = Invoke-RestMethod -Uri $url -Headers @{Authorization = "Basic $token"} -Method Get -ContentType application/json
Foreach($status in $response.value.postDeployApprovals)
{
echo $status.status
$compare = "pending"
if($status.status -eq $compare )
{
echo $status.release.id
$releaseid = $status.release.id
echo $status.releaseEnvironment.id
$environmentid = $status.releaseEnvironment.id
$url1="https://vsrm.dev.azure.com/{org}/{project}/_apis/Release/releases/$($releaseid)/environments/$($environmentid)?api-version=6.0-preview.6"
echo $url1
$JSON = @'
{
"status": "canceled",
"scheduledDeploymentTime": null,
"comment": null,
"variables": {}
}
'@
$response = Invoke-RestMethod -Uri $url1 -Headers @{Authorization = "Basic $token"} -Method PATCH -Body $JSON -ContentType application/json
}
}
当您创建一个新的 Release 时,新阶段将 运行 Powershell 任务取消所有阶段(等待 POST-DEPLOYMENT 批准)。
注意:您需要将最大并行部署数设置为至少 2。
我了解如何为有待批准的预部署批准的版本执行此操作。它在部署前条件>部署队列设置>后续发布>部署最新并取消其他。并且有很多现有的 Whosebug post 询问如何为预部署批准执行此操作。但是似乎没有 POST-DEPLOYMENT.
我们当前的工作流程包括将发布部署到我们的 QA 环境,然后在发布移至 PROD 环境之前等待 QA 团队的 post 部署批准。
但随着 QA 团队发现错误并得到解决,QA 中的版本需要更换。目前唯一的方法是手动取消当前正在等待 post 部署批准的版本,以便可以部署最新版本。
这变得非常乏味,因为我必须自己跟踪并手动完成所有操作。没有办法自动化吗?
你可以参考这张工单:
选项:Deploy latest and cancel others
仅支持 PRE-DEPLOYMENT approval pending。
Is there no way to automate this?
您可以将发布管道阶段的 PowerShell 任务添加到 运行 以下 Rest API 到 get the Release (Pending on POST-DEPLOYMENT Approval) and cancel the release。
这是 PowerShell 示例:
$token = "PAT"
$url=" https://vsrm.dev.azure.com/{ORG}/{PROJECT}/_apis/release/deployments?api-version=6.0"
$token = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($token)"))
$response = Invoke-RestMethod -Uri $url -Headers @{Authorization = "Basic $token"} -Method Get -ContentType application/json
Foreach($status in $response.value.postDeployApprovals)
{
echo $status.status
$compare = "pending"
if($status.status -eq $compare )
{
echo $status.release.id
$releaseid = $status.release.id
echo $status.releaseEnvironment.id
$environmentid = $status.releaseEnvironment.id
$url1="https://vsrm.dev.azure.com/{org}/{project}/_apis/Release/releases/$($releaseid)/environments/$($environmentid)?api-version=6.0-preview.6"
echo $url1
$JSON = @'
{
"status": "canceled",
"scheduledDeploymentTime": null,
"comment": null,
"variables": {}
}
'@
$response = Invoke-RestMethod -Uri $url1 -Headers @{Authorization = "Basic $token"} -Method PATCH -Body $JSON -ContentType application/json
}
}
当您创建一个新的 Release 时,新阶段将 运行 Powershell 任务取消所有阶段(等待 POST-DEPLOYMENT 批准)。
注意:您需要将最大并行部署数设置为至少 2。