Azure Devops: как получить версии артефакта выпуска через Rest API? - PullRequest
0 голосов
/ 14 июля 2020

В конвейере выпуска у меня есть задание, которое извлекает несколько артефактов (ранее созданных в Devops), перечисленных здесь как A и B.

enter image description here

As a first step, I need to get the list of the artifact's name used in the current release. For this, I have some Powershell script that returns this.

Based on the API doc (https://docs.microsoft.com/en-us/rest/api/azure/devops/release/releases/get%20release?view=azure-devops-server-rest-5.0#artifact) он должен возвращать такую ​​информацию (version.id)

$url = "<project URL>/_apis/release/releases/" + $releaseid + "?api-version=5.1"
$res = Invoke-RestMethod -Uri $url -Method Get -Headers @{ Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN" } 

foreach ($a in $res.artifacts)
{
  Write-Host "Artifact name: "$a.alias
  Write-Host "Artifact version: "$a.version.id
}

Это ничего не возвращает в поле версии:

Artifact name:  test-scripts
Artifact version:  
Artifact name:  A
Artifact version:  
Artifact name:  B
Artifact version:

Любой указатель на это очень ценится.

1 Ответ

1 голос
/ 14 июля 2020

Вам нужно указать definitionReference.version.id вместо version.id.

Фрагмент рабочего кода:

$PATToken = "####"
$AuthHeader= @{Authorization = 'Basic ' + [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(":$($PATToken)")) }

$url = "https://vsrm.dev.azure.com/{organization}/${project}/_apis/release/releases/{release id}?api-version=5.1"
$res = Invoke-RestMethod -Uri $url -Method get -Headers $AuthHeader


foreach ($a in $res.artifacts)
{
  Write-Host "Artifact name: "$a.alias
  Write-Host "Artifact version: "$a.definitionReference.version.id
}

Вывод:

enter image description here

Verification:

введите описание изображения здесь

...