作为构建验证的一部分,我希望我的管道检查我的 lib 板条箱的功能分支中的版本号是否严格大于我的货物提要中之前发布的版本。这是为了确保合并 PR 后,发布 crate 不会因为版本号未更改而失败。
为了获取远程版本号,我尝试使用
cargo search
但似乎不支持它,因为它总是以 404
的方式响应:
error: failed to retrieve search results from the registry at https://pkgs.dev.azure.com/{organisation}/cf4789c3-fe81-4003-8668-deadbeef/_packaging/d7cc3967-810b-43cb-bc0e-deadbeef/cargo
还不支持
cargo search
吗?如果有的话,未来有计划支持吗?
有其他方法可以实现我的目标吗?
使用货物搜索命令时我可以重现相同的问题。 认证成功后,返回404错误。
恐怕货物搜索命令不支持使用 Azure DevOps 工件源。
您可以在以下网站提交建议票:开发者社区,这是我们提供产品建议的主要论坛,以报告此功能。
有其他方法可以实现我的目标吗?
为了满足您的要求,您可以考虑使用 Azure DevOps Rest API 来获取包版本:Artifact 详细信息 - 获取包
GET https://feeds.dev.azure.com/{organization}/{project}/_apis/packaging/Feeds/{feedId}/packages?includeAllVersions=true&api-version=7.1
这是 Powershell 脚本示例:
$token = "PAT"
$Org = "Orgname"
$Project = "ProjectName"
$feedname = "feedname"
$Packagename = "packageName"
$GetFeedurl="https://feeds.dev.azure.com/$($Org)/$($Project)/_apis/packaging/feeds?api-version=7.1"
$token = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($token)"))
$response = Invoke-RestMethod -Uri $GetFeedurl -Headers @{Authorization = "Basic $token"} -Method Get -ContentType application/json
foreach($feed in $response.value)
{
if($feed.name -eq $feedname)
{
$feedid = $feed.id
}
}
$GetPackage ="https://feeds.dev.azure.com/$($Org)/$($Project)/_apis/packaging/Feeds/$($feedid)/packages?includeAllVersions=true&api-version=7.1"
$response1 = Invoke-RestMethod -Uri $GetPackage -Headers @{Authorization = "Basic $token"} -Method Get -ContentType application/json
foreach($package in $response1.value)
{
if($package.name -eq $Packagename)
{
$versions= $package.versions.version
}
}
echo $Packagename
echo $versions
结果:
Feed 包版本:
脚本输出: