Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在发布期间使用Azure DevOps Rest API通过powershell获取发布状态(成功、失败)_Powershell_Azure Devops Rest Api - Fatal编程技术网

如何在发布期间使用Azure DevOps Rest API通过powershell获取发布状态(成功、失败)

如何在发布期间使用Azure DevOps Rest API通过powershell获取发布状态(成功、失败),powershell,azure-devops-rest-api,Powershell,Azure Devops Rest Api,我使用的是$releaseUri=”https://vsrm.dev.azure.com/{Org}/{Project}/_api/Release/deployments?definitionId=$releaseDefinitionId&definitionEnvironmentId=$envId?api版本“rest api以确定发布部署状态。 这里需要注意的是,我在发布中把这当作一项任务来做。它总是说发布正在进行中。 我的目标是只有在发布成功时才标记构建。想知道在发布完成之前,我如何才能在

我使用的是
$releaseUri=”https://vsrm.dev.azure.com/{Org}/{Project}/_api/Release/deployments?definitionId=$releaseDefinitionId&definitionEnvironmentId=$envId?api版本“
rest api以确定发布部署状态。 这里需要注意的是,我在发布中把这当作一项任务来做。它总是说发布正在进行中。 我的目标是只有在发布成功时才标记构建。想知道在发布完成之前,我如何才能在发布期间获得发布状态

感谢您在这方面的任何意见

它总是说发布正在进行中

如果在发布期间将此API作为任务运行,
进行中
是一种预期行为。因为对于发布管道服务器,它包含很多行为,除了部署作业外,它还包括批准、关卡等。对于服务器,只有在所有行为结束后,发布才是真正的结束。或者它将被视为进行中的

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

仅当发布成功时才标记生成

要实现你想要的,没有直接的方法可以帮助你实现。作为解决方法,您可以创建一个版本级别变量来帮助您完成这项工作

场景:有一个发布管道,它有一个执行部署作业的阶段。我的工作围绕逻辑是在代理作业的最后一步创建一个发布级别变量,只有在同一代理作业中的先前任务都成功之后,才能创建一个新任务。现在,如果成功创建了发布级别变量,则表示此代理作业已成功运行

对于版本中的create变量,您可以使用:

PUT https://vsrm.dev.azure.com/{organization}/{project}/_apis/release/releases/{releaseId}?api-version=5.0
和完成的脚本,你可以参考这个


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


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

感谢Merlin的详细回复。确实有帮助。