Azure получить список «Развернутых в настоящее время» всех конвейеров выпуска - PullRequest
0 голосов
/ 24 января 2020

У меня есть серия конвейеров выпуска на Azure DevOps, которые используются для выпуска различных репозиториев в наших средах. Некоторые из этих выпусков останавливаются на локальных, некоторые на постановке и несколько go на всем протяжении жизни. Для отслеживания я хочу увидеть, какая версия выпуска была добавлена ​​в каждую среду. Я могу получить список всех выпусков, используя адрес, описанный здесь: https://docs.microsoft.com/en-us/rest/api/azure/devops/release/releases/list?view=azure-devops-rest-5.1, но я хотел бы сделать то же самое, что и фильтр Azure DevOps «В настоящее время развернут».

releases image

Есть идеи?

1 Ответ

0 голосов
/ 26 января 2020

Похоже, в API нет единого источника для получения эквивалентного представления. Смотрите этот вопрос github здесь .

После разговора в github, как только вы определите, какие среды существуют в ваших определениях релизов. Вы можете сделать это, сделав несколько вызовов к конечной точке развертывания .

Пример 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 "--------------------------------------------------"
}
...