![](/img/trans.png)
[英]How to get status of the release (success, failure) with powershell using Azure DevOps Rest API
[英]How to get status of the release (success, failure) with powershell using Azure DevOps Rest API during the release
I'm using the $releaseUri = "https://vsrm.dev.azure.com/{Org}/{Project}/_apis/Release/deployments?definitionId=$releaseDefinitionId&definitionEnvironmentId=$envId?api-version"
rest api to确定发布部署状态。 这里需要注意的是,我将其作为发布本身的一项任务来执行。 它总是说发布正在进行中。 我的目标是仅在发布成功时标记构建。 想知道在发布完成之前,我怎么能在发布期间获得发布状态。
感谢您对此的任何投入!
它总是说发布正在进行中。
如果在发布期间将此 API 作为任务运行,则in progress
中是预期行为。 因为对于发布流水线服务器来说,它包含了很多行为,除了部署作业,还包括approve、gate等。对于服务器来说,只有在所有行为结束之后,发布才是真正的结束。 否则它会被视为in progress
。
在您的操作中,您将此 API 设置为发布过程的一部分,它永远不会获得真正的部署状态,因为完成的发布过程尚未完成。
仅在发布成功时标记构建
要实现您想要的,没有直接的方法可以帮助您实现这一目标。 作为解决方法,您可以创建一个版本级变量来帮助您做到这一点。
场景:有一个发布管道,它有一个执行部署作业的阶段。 我在逻辑上的工作是在代理作业的最后一步创建一个带有新任务的发布级变量,只有在同一个代理作业中的先前任务都成功之后。 现在,如果发布级别变量创建成功,则表示此代理作业已成功运行。
对于发布中创建变量的API ,您可以使用:
PUT https://vsrm.dev.azure.com/{organization}/{project}/_apis/release/releases/{releaseId}?api-version=5.0
而完成的脚本,可以参考这个博客脚本。
使用此逻辑,创建一个新的发布级变量意味着其对应的代理作业成功。 因此,无论发布管道中存在多少代理作业,只需要确定这些变量是否存在,或者该值是否设置为您期望的值(例如 true 或 false)。 如果满足,则执行在构建中添加标签的操作。
添加一个将在发布过程结束时执行的代理作业。 在这个代理作业中,只需要添加一个用于标记构建的任务。 在代理作业级别使用条件表达式来确定是否需要执行任务。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.