首页 > 解决方案 > 如果相同版本的先前部署成功,则重新部署必须失败-

问题描述

我必须防止已经成功的发布再次部署到生产环境中。因此,当再次部署相同的版本时,我需要在生产环境中查找先前部署的状态,并检查它是否成功。如果是这样,则不应进行部署。

然而。一旦我再次部署发布,生产状态就会从“成功”变为“进行中”,这当然会导致重新部署成功。

是否有人熟悉这个问题,有没有办法开始部署并检查先前部署到同一版本的生产操作系统的状态?

标签: azureazure-devops

解决方案


您可以使用 REST API部署 - 列表来获取发布列表。如果要指定获得的版本范围,请注意URI 参数。

然后,您可以在 PowerShell 任务中发送此 REST API。请注意,您不会获得当前版本,您将获得最后一个版本。

这是一个例子和我的日志:

$token = "{pat}"
$token = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($token)"))
$url="https://vsrm.dev.azure.com/{organization}/{project}/_apis/Release/deployments?definitionId={id}&queryOrder=descending&api-version=6.0"
$head = @{ Authorization =" Basic $token" }
$result = Invoke-RestMethod -Uri $url -Method GET -Headers $head -ContentType application/json-patch+json
echo $result.value[1].deploymentStatus

在此处输入图像描述

您可以通过 获取最新版本的状态,$result.value[1].deploymentStatus并且您将始终inProgress通过$result.value[0].deploymentStatus. 在此示例中,我将其设置queryOrderdescending. 您也可以忽略此参数,因为 REST API 默认为降序排序。


推荐阅读