Azure 获取所有发布管道的 "Currently Deployed" 列表

Azure get "Currently Deployed" list of all release pipelines

我在 Azure DevOps 上有一系列发布管道,用于通过我们的环境发布不同的存储库。其中一些版本在本地停止,一些在分期发布,还有一些一直到现场。为了跟踪,我想看看每个环境都去了哪个发布版本。我可以使用此处描述的地址获取所有版本的列表:https://docs.microsoft.com/en-us/rest/api/azure/devops/release/releases/list?view=azure-devops-rest-5.1,但我想做的是执行与 Azure DevOps 的 "Currently Deployed" 过滤器相同的操作。

有什么想法吗?

API 中似乎没有单一来源可获得等效视图。看到这个 github issue here

在 github 中的对话之后,一旦您掌握了发布定义中存在的环境。您可以通过多次调用 deployments endpoint 来实现。

PowerShell 示例:

param (
    [string]$token,
    [string]$collection,
    [string]$projectName
)

$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $user, $token)))
$response = Invoke-RestMethod "https://vsrm.dev.azure.com/$collection/$projectName/_apis/release/definitions?`$expand=Environments&`$top=100&api-version=5.1" -Method 'GET' -Headers @{Authorization = ("Basic {0}" -f $base64AuthInfo)}

foreach ($releaseDefinition in $response.value){
   write-host $releaseDefinition.name
   write-host "--------------------------------------------------"
   foreach ($environment in $releaseDefinition.environments){
       write-host $environment.name
       $definitionEnvironmentId = $environment.id
       $response = Invoke-RestMethod "https://vsrm.dev.azure.com/$collection/$projectName/_apis/release/deployments?api-version=5.0&deploymentStatus=succeeded&latestAttemptsOnly=true&definitionEnvironmentId=$definitionEnvironmentId&`$top=1" -Method 'GET' -Headers @{Authorization = ("Basic {0}" -f $base64AuthInfo)}
       write-host $response.value[0].release.name $response.value[0].deploymentStatus $response.value[0].completedOn
   }
   write-host "--------------------------------------------------"
}