【问题标题】:Is it possible to search a package from all Artifact Feeds in Azure DevOps?是否可以从 Azure DevOps 中的所有工件源中搜索包?
【发布时间】:2020-10-15 14:24:09
【问题描述】:
我知道可以使用以下链接获取包含在单个 Artifact Feed 中的所有包:
https://feeds.dev.azure.com/{organization}/{project}/_apis/packaging/Feeds/{feedId}/packages?api-version=6.0-preview.1
我注意到在 Azure DevOps 中,搜索栏能够查看项目中的所有提要。因此,我的问题是:是否可以通过 API 实现相同的功能,并从所有提要中获取所有包而不是一个。
【问题讨论】:
-
嗨@Styn。这张票有更新吗?如果答案能给你一些帮助,请随时告诉我。只是提醒this。
标签:
azure
azure-devops
azure-devops-rest-api
【解决方案1】:
是否可以通过 API 实现相同的功能,并从所有提要中获取所有包而不是一个。
据我所知,这是可以实现的。
您可以使用Rest API -Feed Management - Get Feeds 获取项目级别的所有提要。
然后你可以使用 Rest API 来获取包。你可以通过powershell同时执行这两个api。
这是 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)"
}
在这种情况下,您可以在一个项目中获取项目范围的所有提要,然后获取其中的所有包。
顺便说一句,如果要获取所有组织范围的提要,只需删除 URL 中的项目参数即可。