使用来自 Crates.io 的包
Azure DevOps Services
Azure Artifacts 上游源使开发人员能够使用公共注册表中的包,例如 Crates.io 和 nuget.org。本文将指导你设置项目并使用命令行从 Crates.io 使用箱。
本文将指导你完成以下操作:
- 创建 Azure Artifacts 源
- 连接源
- 使用来自上游的箱
先决条件
Azure DevOps 组织。 如果还没有组织,则创建一个组织。
一个 Azure DevOps 项目。 如果没有项目,请创建一个项目 。
下载并安装 rustup。
创建源
Azure Artifacts 建议为从 crates.io 使用 crate 设置一个专用源,并为发布内部 crate 设置一个单独的源。
登录到 Azure DevOps 组织,并导航到你的项目。
选择“项目”,然后选择“创建源”。
输入源的名称,定义其可见性,然后选择范围。 请确保检查上游源检查框,以包含公共注册表中的包。
完成操作后,选择“创建”。
连接源
登录到 Azure DevOps 组织,并导航到你的项目。
选择“ 项目”,然后从下拉菜单中选择源。
选择要提供连接,然后从左侧导航窗格中选择“货物”。
如果这是首次将 Cargo 与 Azure Artifacts 配合使用,请确保已安装 rustup。
将 Project 安装部分中提供的代码片段添加到源存储库中的 .cargo/config.toml 文件:
- 项目作用域的源:
[registries] <FEED_NAME> = { index = "sparse+https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/Cargo/index/" } [source.crates-io] replace-with = "<FEED_NAME>"
- 组织作用域的源:
[registries] <FEED_NAME> = { index = "sparse+https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/Cargo/index/" } [source.crates-io] replace-with = "<FEED_NAME>"
配置凭据提供程序
若要将 Cargo 与 Azure Artifacts 配合使用,需要设置凭据提供程序。 提供的设置将为当前用户配置默认凭据帮助程序:
将以下代码片段粘贴到 %U标准版RPROFILE%.cargo\config.toml 中:
[registry]
global-credential-providers = ["cargo:token", "cargo:wincred"]
登录到注册表
使用“打包”>“读取和写入”范围创建个人访问令牌,以便对源进行身份验证。
运行以下命令以登录到注册表。 将占位符替换为源的名称,并在出现提示时粘贴在上一步中创建的个人访问令牌:
"Basic " + [Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes("PAT:" + (Read-Host -MaskInput "Enter PAT"))) | cargo login --registry <FEED_NAME>
从 Crates.io 保存包
注意
若要从 上游 保存包,必须具有源和上游读取者(协作者)角色或更高版本。 有关详细信息,请参阅 权限。
设置项目、配置凭据提供程序并登录到源后,我们可以开始从上游使用包。 Azure Artifacts 将安装的任何包的副本从上游保存到源。
在此示例中,我们使用 serde
箱(序列化/反序列化框架):
在项目目录中运行以下命令,将箱添加到 cargo.toml:
cargo add serde
运行以下命令以生成项目并使用箱:
cargo build
安装包后,副本将保存到源。 导航到源以验证其状态。 程序包应在源中可用,如下所示: