如何在发行期间使用Azure DevOps Rest API使用powershell获取发行状态(成功,失败)

问题描述 投票:0回答:1

我正在使用$releaseUri = "https://vsrm.dev.azure.com/{Org}/{Project}/_apis/Release/deployments?definitionId=$releaseDefinitionId&definitionEnvironmentId=$envId?api-version" rest api来确定发布部署状态。需要注意的是,我在发行版本身中将其作为任务来完成。它总是说发布正在进行中。我的目标是仅在发布成功后才标记构建。想知道我如何才能在发行完成之前获得发行期间的发行状态。

感谢任何输入!

powershell azure-devops-rest-api
1个回答
0
投票

它总是说发布正在进行中。

如果在发行期间以任务形式运行此API,则in progressexpect行为。因为对于发布管道服务器,它除了包含部署作业外,还包含许多行为,还包括批准,登门等。对于服务器而言,只有在所有行为结束后,发布才是真正的终结。否则将被视为in progress

在操作中,您将此API设置为发布过程的一部分,由于完成的发布过程尚未完成,因此它永远不会获得真正的部署状态。

仅在发布成功后才标记构建

要实现您想要的目标,没有直接的方法可以帮助您实现目标。解决方法是,您可以创建一个发行级变量来帮助您。

场景:有一个发布管道,该管道具有执行部署作业的阶段。我围绕逻辑所做的工作是仅在同一代理作业中的先前任务全部成功之后,才在代理作业的最后一步创建带有新任务的release-level variable。现在,如果成功创建了release-level variable,则表示此代理作业已成功运行。

对于发行版中create变量的API,您可以使用:

PUT https://vsrm.dev.azure.com/{organization}/{project}/_apis/release/releases/{releaseId}?api-version=5.0

以及完成的脚本,您可以参考此blog script


使用此逻辑,创建一个新的发行版变量意味着其相应的代理作业成功。因此,无论发布管道中存在多少个代理作业,都只需确定这些变量是否存在,或者是否将值设置为您期望的值(例如true或false)即可。如果满足,则执行将标签添加到构建的操作。

添加一个将在发布过程结束时执行的代理作业。在此代理工作中,只需添加一个用于标记构建的任务即可。在代理作业级别使用condition expression确定是否需要执行任务。

© www.soinside.com 2019 - 2024. All rights reserved.