1

我了解如何为预部署批准待定的版本执行此操作。它位于部署前条件 > 部署队列设置 > 后续版本 > 部署最新并取消其他。并且有很多现有的 StackOverflow 帖子询问如何为预部署批准执行此操作。但似乎没有任何后期部署。

我们当前的工作流程包括将发布部署到我们的 QA 环境,然后在发布移动到 PROD 环境之前等待 QA 团队的部署后批准。

但随着 QA 团队发现错误并得到解决,QA 中的版本需要更换。目前唯一的方法是手动取消当前等待部署后批准的版本,以便可以部署最新版本。

这变得非常乏味,因为我必须自己跟踪并手动完成所有操作。有没有办法自动化这个?

4

1 回答 1

2

您可以参考这张票:无法批准最新版本 Azure devOps

选项 :Deploy latest and cancel others仅支持 PRE-DEPLOYMENT 审批待定。

有没有办法自动化这个?

您可以在发布管道阶段添加 PowerShell 任务以运行以下 Rest API 以获取发布(待部署后批准)并取消发布

这是 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
}

}

创建新版本时,新阶段将运行 Powershell 任务以取消所有阶段(等待 POST-DEPLOYMENT 批准)。

注意:您需要将最大并行部署数设置为至少 2。

在此处输入图像描述

于 2021-08-18T06:43:42.327 回答