Azure DevOps Services |Azure DevOps Server |Azure DevOps Server 2022
Azure Artifacts 上游源使开发人员能够使用公共注册表中的包,例如 Crates.io 和 nuget.org。本文将指导你设置项目并使用命令行从 Crates.io 使用箱。
先决条件
| 产品 | 要求 |
|---|---|
| Azure DevOps | - 一个 Azure DevOps 组织。 - Azure DevOps 项目。 - 下载并安装 rustup。 需要 Cargo 版本 1.74.0 或更高版本。 |
创建源
Azure Artifacts 建议为从 crates.io 使用 crate 设置一个专用源,并为发布内部 crate 设置一个单独的源。 如果已有 Azure Artifacts 源,请跳到下一部分。 否则,请创建如下所示的新项:
登录到 Azure DevOps 组织,然后导航到项目。
选择“项目”,然后选择“创建源”。
为源提供 名称 ,选择 可见性 以定义谁可以查看包,然后选择源 范围。 选中包括公共源中的包复选框,以在您的订阅源上启用上游源。
完成操作后,选择“创建”。
连接到源
有了订阅源后,您需要设置 config.toml 文件,配置凭据提供者,然后登录注册表以便通过订阅源进行身份验证。
项目设置
登录到 Azure DevOps 组织,然后导航到项目。
选择项目,然后从下拉菜单中选择源。
选择连接到数据源,然后从左侧导航窗格中选择货物。
从 “项目设置 ”部分复制代码片段,并将其粘贴到源存储库中的 .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>"
登录到 Azure DevOps 集合,然后导航到项目。
选择项目,然后从下拉菜单中选择源。
选择连接到数据源,然后从左侧导航窗格中选择货物。
从 “项目设置 ”部分复制代码片段,并将其粘贴到源存储库中的 .cargo/config.toml 文件中。 它应类似于:
项目范围的源:
[registries] <FEED_NAME> = { index = "sparse+https://pkgs.dev.azure.com/<COLLECTION_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/<COLLECTION_NAME>/_packaging/<FEED_NAME>/Cargo/index/" } [source.crates-io] replace-with = "<FEED_NAME>"
配置凭据提供程序
若要将 Cargo 与 Azure Artifacts 配合使用,需要设置 凭据提供程序。 以下设置将为用户设置默认凭据帮助程序:
将以下代码片段粘贴到 %USERPROFILE%.cargo\config.toml 中:
[registry]
global-credential-providers = ["cargo:token", "cargo:wincred"]
登录到注册表
运行以下命令以登录到注册表。 将FEED_NAME<替换为>源名称,并在升级后粘贴之前创建的个人访问令牌。
"Basic " + [Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes("PAT:" + (Read-Host -MaskInput "Enter PAT"))) | cargo login --registry <FEED_NAME>
从 Crates.io 保存包
现在您的项目已设置好,凭据提供程序已配置,并已使用提要进行身份验证,您可以开始从上游源获取包。 Azure Artifacts 会自动将从上游安装的任何包的副本保存到包源中。
以下示例演示了如何使用 reqwest 库,这是一种用于发出 HTTP 请求的 HTTP 客户端库:
通过在项目目录中运行以下命令,将箱添加到 Cargo.toml :
cargo add reqwest运行以下命令以生成项目并使用箱:
cargo build
安装完包后,副本将保存到您的订阅。 可以通过导航到 Azure DevOps 的信息流中来验证这一点。 您应该可以在您的信息流中看到该包,如下所示:
注意
若要从上游保存包,必须具有 源和上游读取者(协作者) 角色或更高版本。 有关更多详细信息,请参阅 源角色和权限 。