Azure开发人员:检查其他版本的状态发布

时间:2019-08-13 10:20:24

标签: azure-devops

我有一个发布A,它在X环境中发布。 另一方面,我有在环境Y中发布的发行版B。

问题是我想知道是否可以检查发行版B中发行版A的状态,因此我可以抛出错误而不发布发行版B。

我不知道是否可以使用powershell或类似工具来做到这一点。

有什么想法或方向吗?

1 个答案:

答案 0 :(得分:2)

使用Azure DevOps REST API的PowerShell脚本是您最好的选择。您的问题有点similar to this one

您需要找到版本A和环境Y的定义ID。找到这些值的最佳位置是环境Y中版本A的部署的“初始化作业”任务的日志输出。变量 RELEASE_DEFINITIONID RELEASE_ENVIRONMENTID

假定Azure管道(不是基于YAML)的“经典”模式:

  1. 为管道的“代理阶段”启用"allow scripts to access oAuth token"复选框。enter image description here
  2. 添加一个PowerShell任务,并使用列表部署端点来查询“发行定义A”的最新版本(有关完整示例,请参见链接的答案,以下为简化版本)
param()

$auth = "Bearer {0}" -f $env:SYSTEM_ACCESSTOKEN

$url =  "https://{0}{1}" -f $env:SYSTEM_TEAMFOUNDATIONCOLLECTIONURI $env:SYSTEM_TEAMPROJECTID
$url += "/release/deployments?definitionId=" + $your_release_definition_id
$url += "&definitionEnvironmentId=" + $your_environment_definition_id
$url += "&deploymentStatus=succeeded"
$url += "&queryOrder=descending"
$url += "&api-version=5.0"

$releaseA = Invoke-WebRequest $url -Headers @{Authorization=($authHeader)} | ConvertFrom-Json
  1. 检查发行版的状态,如果不符合您的条件,则会引发错误。

或者,如果此发行版依赖于另一个发行版,并且它们需要作为一个单元一起部署-为什么不考虑在该发行版中添加多个构件并作为一个发行版部署呢?