Azure DevOps Cargo制品源是否支持cargo search?求版本校验方案
问题解答
cargo search对Azure DevOps Cargo制品源的支持情况
Azure DevOps的Cargo制品源目前不支持cargo search命令,这是官方明确的限制,你遇到的404错误正是由此导致。关于未来的支持计划,微软暂未公开具体时间表,需留意Azure DevOps官方更新。
替代实现方案
要实现功能分支lib crate版本号严格大于已发布版本的检查,可采用以下几种方法:
1. 调用Azure DevOps Packages REST API查询版本
直接通过API获取目标crate的已发布版本,再与本地版本对比:
- 提取本地Cargo.toml中的版本号:
grep -E '^version = "' ./lib/Cargo.toml | cut -d '"' -f 2 - 使用PAT认证调用API获取远程版本列表(替换占位符为实际信息):
curl -u :{你的PAT} "https://pkgs.dev.azure.com/{organisation}/{project}/_apis/packaging/feeds/{feed-id}/packages?packageName={crate-name}&protocolType=cargo&api-version=7.1-preview.1" - 解析返回的JSON数据提取最新版本,用
semver等工具做版本对比,确保本地版本更高。
2. 利用cargo metadata查询索引信息
如果已为Azure DevOps Cargo源初始化了索引,可通过cargo metadata获取远程版本:
cargo metadata --format-version 1 --manifest-path ./lib/Cargo.toml | jq '.packages[] | select(.name == "{crate-name}") | .version'
需确保本地cargo配置已正确指向该私有源,且拉取过索引数据。
3. 使用Azure DevOps CLI查询
通过az artifacts命令直接查询已发布的cargo包版本:
az artifacts universal list --feed {feed-name} --name {crate-name} --organization https://dev.azure.com/{organisation} --project {project-name} --query '[].version'
流水线中需提前完成Azure DevOps CLI的认证配置。
内容的提问来源于stack exchange,提问作者jonesn
相关产品推荐
相关产品推荐

