azure - 如果相同版本的先前部署成功,则重新部署必须失败-
问题描述
我必须防止已经成功的发布再次部署到生产环境中。因此,当再次部署相同的版本时,我需要在生产环境中查找先前部署的状态,并检查它是否成功。如果是这样,则不应进行部署。
然而。一旦我再次部署发布,生产状态就会从“成功”变为“进行中”,这当然会导致重新部署成功。
是否有人熟悉这个问题,有没有办法开始部署并检查先前部署到同一版本的生产操作系统的状态?
解决方案
您可以使用 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
. 在此示例中,我将其设置queryOrder
为descending
. 您也可以忽略此参数,因为 REST API 默认为降序排序。
推荐阅读
- c++ - 柯南有没有办法导出一个空目录?
- php - 如何重写.htaccess外部链接php
- sql - SQL GROUP BY 并为每个 GROUP 创建元素
- c - C中的十六进制转换为字符串
- c - EOF 在 Windows 系统的 getchar() 和 scanf() 中是如何作用的?
- c# - WebAPI - 从请求中手动解析控制器和操作
- php - 使用 PHP 将调查插入 SQL 数据库
- curl - 使用 curl 时从标头获取 HTTP 响应状态代码的问题
- ssh - 如何通过 SSH(或 FTP)连接到 Blogger 主机?
- nginx - 我可以在 Nginx 中创建一个“私人”位置吗?