Azure DevOps Services |Azure DevOps Server |Azure DevOps Server 2022
通过使用 Azure Artifacts,您可以从自己的源以及 crates.io 等公共注册表发布和恢复 Cargo 包。 使用 Azure Artifacts 托管内部 crates、连接上游注册表,并通过单个源管理包的访问权限。 本快速入门将引导您创建源、配置 Cargo 项目,以及使用 Azure Artifacts 发布和使用 Cargo 包。
先决条件
| 产品 | 要求 |
|---|---|
| Azure DevOps | - 一个 Azure DevOps 组织。 - Azure DevOps project。 - 下载和安装 rustup。 需要 Cargo 1.74.0 或更高版本。 |
创建源
如果您已经拥有一个 Azure Artifacts 源,请跳至下一节。 否则,请按照以下步骤创建源。 Azure Artifacts 建议使用一个源来获取来自 crates.io 等公共注册表的 crates,并使用另一个独立的源来发布内部 crates。
登录到Azure DevOps,然后转到项目。
选择“项目”,然后选择“创建源”。
为您的源输入名称,选择其可见性,然后选择范围。 确保选中 “上游源 ”复选框以包含公共注册表中的包。
完成操作后,选择“创建”。
连接到源
在从您的源发布或恢复包之前,必须先配置项目以进行身份验证并连接到该源。
登录到Azure DevOps,然后转到项目。
选择“ 项目”,然后从下拉菜单中选择源。
选择 连接到数据源,然后从左侧导航面板中选择 Cargo。
按照项目设置部分中的步骤,配置
config.toml文件。在同一页面上,请按照配置凭据提供程序和登录到注册表部分中的说明,设置凭据提供程序并连接到您的源。 有关详细步骤,请参阅 Cargo - 项目设置。
重要说明
Azure Artifacts中的货物支持需要 Rust 1.74 或更高版本,其中包括对该功能的支持registry-auth。
若要更新 Rust 版本,请运行 rustup update
重要说明
Cargo 目前处于预览阶段,可能需要启用registry-auth不稳定功能的夜间构建工具链。 若要启用 registry-auth,请将以下设置添加到 .cargo/config.toml。
[unstable]
registry-auth = true
要使用夜间工具链,请运行以下命令:
rustup default nightly
发布包
在发布 Cargo 包之前,请确保已完成“连接到源”中的步骤,以便可以使用Azure Artifacts源进行身份验证。
在包含 Cargo.toml 文件的目录中,运行以下命令以发布包:
cargo publish
如果你遇到 GLib-GObject-CRITICAL - libsecret-CRITICAL 错误,请务必按照以下步骤操作:
验证是否已安装 libsecret :
sudo apt update && sudo apt install libsecret-1-0确保 gnome-keyring 正在运行:
gnome-keyring-daemon --start --components=secrets将 Rust 更新到最新稳定版本并将稳定版本设置为默认工具链:
rustup update rustup default stable如果问题仍然存在,请使用详细日志记录重新运行
cargo publish以收集更多详细信息:RUST_LOG=debug cargo publish --registry <REGISTRY_NAME>
恢复软件包
在还原依赖项之前,请确保已完成“连接到源”中的步骤,以便可以使用Azure Artifacts源进行身份验证。
请确保你的依赖项列在你的
Cargo.toml文件的[dependencies]部分中。如果您直接从私有 Azure Artifacts 源使用 crates,请按以下方式显式指定注册表:
[dependencies] CRATE_NAME = { version = "VERSION_NUMBER", registry = "FEED_NAME" }如果您通过
replace-with配置,从 crates.io 经由上游源引用 crates,请按以下方式指定:[dependencies] CRATE_NAME = "VERSION_NUMBER"在项目目录中运行以下命令,以构建项目并从源恢复依赖项:
cargo build
下载的 crates 会缓存于 ~/.cargo/registry/cache/<registry-hash>/ 位置,其中 registry-hash 是基于您的源 URL 生成的唯一标识符。