Можно ли выполнить поиск пакета из всех каналов артефактов в Azure DevOps?

#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.