#azure #azure-devops #azure-devops-rest-api
#azure #azure-devops #azure-devops-rest-api
Вопрос:
Я знаю, что можно получить все пакеты, содержащиеся в одном канале артефактов, используя ссылку ниже:
https://feeds.dev.azure.com/{organization}/{project}/_apis/packaging/Feeds/{feedId}/packages?api-version=6.0-preview.1
Я заметил в Azure DevOps, что панель поиска имеет возможность просматривать ВСЕ каналы внутри проекта. Таким образом, мой вопрос: возможно ли достичь той же функциональности с помощью API и получить все пакеты из всех каналов вместо одного.
Комментарии:
1. Привет @Styn. Есть ли какие-либо обновления об этом билете? Не стесняйтесь, дайте мне знать, если ответы могут вам помочь. Просто напоминаю об этом .
Ответ №1:
Возможно ли достичь той же функциональности с помощью API и получить все пакеты из всех каналов вместо одного.
Насколько я знаю, это достижимо.
Вы можете использовать Rest API -Управление каналами — Получение каналов, чтобы получить все каналы на уровне проекта.
Затем вы можете использовать Rest API для получения пакетов. Вы можете выполнить эти два API одновременно через powershell.
Вот пример Powershell:
$token = "PAT"
$url="https://feeds.dev.azure.com/{Organization Name}/{Project Name}/_apis/packaging/feeds?api-version=6.0-preview.1"
$token = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($token)"))
$response = Invoke-RestMethod -Uri $url -Headers @{Authorization = "Basic $token"} -Method Get -ContentType application/json
ForEach( $feedid in $response.value.id )
{
echo $feedid
$url1="https://feeds.dev.azure.com/{Organization Name}/{Project Name}/_apis/packaging/Feeds/$($feedid)/packages?api-version=6.0-preview.1"
$response1 = Invoke-RestMethod -Uri $url1 -Headers @{Authorization = "Basic $token"} -Method Get -ContentType application/json
Write-Host "Package = $($response1 | ConvertTo-Json -Depth 100)"
}
В этом случае вы можете получить все каналы области проекта в проекте, а затем получить все пакеты в нем.
Кстати, если вы хотите получить все каналы области организации, вам нужно только удалить параметр project в URL.