Как получить PackageID для API Azure Devops? - PullRequest
1 голос
/ 02 ноября 2019

Мне нужен список доступных версий универсального пакета, который хранится в Azure Devops. Моя мысль состоит в том, чтобы вызвать REST API Get Package Versions, чтобы получить список версий пакетов в фиде.

GET https://feeds.dev.azure.com/{organization}/{project}/_apis/packaging/Feeds/{feedId}/Packages/{packageId}/versions?api-version=5.1-preview.1

Проблема в том, что для этого требуется packageId, который является GUID, и я знаю тольконазвание. Единственный способ, который я выяснил до сих пор, чтобы преобразовать имя пакета в GUID, - это использовать «Get Packages», но он возвращает каждый пакет в фиде (который для меня включает в себя тысячи пакетов NPM), и это делает загрузку очень большой дляГорстка вещей, которые мне нужны. Есть ли способ извлечь packageId для данного имени пакета? Или есть лучший способ извлечь все версии пакета?

Ответы [ 2 ]

1 голос
/ 04 ноября 2019

Кто-то указал мне, что в API Get Packages есть опции для IncludeAllVersions и packageNameQuery для достижения того, что я хочу, вместо использования GetAllVersions.

https://feeds.dev.azure.com/{organization}/{project}/_apis/packaging/Feeds/{feedId}/Packages?includeAllVersions=true&packageNameQuery={packageName}&protocol​Type=nuget
0 голосов
/ 02 ноября 2019

Полагаю, вы проверили несколько документов и обнаружили, что прямого API не может позволить вам получить указанный упакованный идентификатор, верно? Кроме того, как сказал документ , имя пакета не может использоваться в этом API:

enter image description here


ФактическиУ вас очень близок к ответу. Просто добавьте фильтр во время работы Get Packages. Но для этого нужно выполнить какой-либо сценарий в командной строке Powershell или в Powershell ISE, что является наиболее удобным для вас подходом. Вы также можете запустить приведенный ниже сценарий в конвейере Azure Devops, но сравнить его с выполнением в командной строке, это немного громоздко.

Запускать сценарий ниже в командной строке Powershell или PowershellISE :

$token = "{your PAT token}"
$url = 'https://feeds.dev.azure.com/{org name}/_apis/packaging/Feeds/{feed ID}/packages'

$token = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($token)"))

$response = Invoke-RestMethod -Uri $url -Headers @{Authorization = "Basic $token"} -Method Get

$results = $response.value | Where {$_.name -eq "{Package Name}"} #|

Write-Host "results = $($results | ConvertTo-Json -Depth 100)"

Примечание: В приведенном выше сценарии вам просто нужно заменить значение PAT token, Organization name и ваше package name.


Затем вы получите информацию об указанном пакете и сможете скопировать идентификатор пакета из командной строки и применить его в другом месте:

enter image description here

Примечание: Приведенный выше сценарий также можно применять в задаче Powershell Azure Devops без каких-либо изменений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...