使用来自 Crates.io 的包

Azure DevOps Services

Azure Artifacts 上游源使开发人员能够使用公共注册表中的包,例如 Crates.io 和 nuget.org。本文将指导你设置项目并使用命令行从 Crates.io 使用箱。

本文将指导你完成以下操作:

  • 创建 Azure Artifacts 源
  • 连接源
  • 使用来自上游的箱

先决条件

创建源

Azure Artifacts 建议为从 crates.io 使用 crate 设置一个专用源,并为发布内部 crate 设置一个单独的源。

  1. 登录到 Azure DevOps 组织,并导航到你的项目。

  2. 选择“项目”,然后选择“创建源”

  3. 输入源的名称,定义其可见性,然后选择范围。 请确保检查上游源检查框,以包含公共注册表中的包。

  4. 完成操作后,选择“创建”

    显示如何为货物上游创建源的屏幕截图。

连接源

  1. 登录到 Azure DevOps 组织,并导航到你的项目。

  2. 选择“ 项目”,然后从下拉菜单中选择源。

  3. 选择要提供连接,然后从左侧导航窗格中选择“货物”。

  4. 如果这是首次将 Cargo 与 Azure Artifacts 配合使用,请确保已安装 rustup

  5. 将 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"]

登录到注册表

  1. 使用“打包”>“读取和写入”范围创建个人访问令牌,以便对源进行身份验证。

  2. 运行以下命令以登录到注册表。 将占位符替换为源的名称,并在出现提示时粘贴在上一步中创建的个人访问令牌:

    "Basic " + [Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes("PAT:" + (Read-Host -MaskInput "Enter PAT"))) | cargo login --registry <FEED_NAME>
    

从 Crates.io 保存包

注意

若要从 上游 保存包,必须具有源和上游读取者(协作者)角色或更高版本。 有关详细信息,请参阅 权限

设置项目、配置凭据提供程序并登录到源后,我们可以开始从上游使用包。 Azure Artifacts 将安装的任何包的副本从上游保存到源。

在此示例中,我们使用 serde 箱(序列化/反序列化框架):

  1. 在项目目录中运行以下命令,将箱添加到 cargo.toml

    cargo add serde
    
  2. 运行以下命令以生成项目并使用箱:

    cargo build
    

安装包后,副本将保存到源。 导航到源以验证其状态。 程序包应在源中可用,如下所示:

显示从上游使用的 *serde* 箱的屏幕截图。