View a markdown version of this page

CodeArtifact 与 nuget 或 dotnet CLI 一起使用 - CodeArtifact

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

CodeArtifact 与 nuget 或 dotnet CLI 一起使用

您可以使用nuget和之类的 CLI 工具dotnet来发布和使用来自的软件包 CodeArtifact。本文档提供有关配置 CLI 工具以及使用这些工具来发布或使用程序包的信息。

配置 nuget 或 dotnet CLI

您可以使用 CodeArtifact NuGet 凭据提供商配置 nuget 或 dotnet CLI,也可以手动配置。 AWS CLI强烈建议 NuGet 使用凭据提供商进行配置,以简化设置和继续进行身份验证。

方法 1:使用 CodeArtifact NuGet 凭据提供者进行配置

CodeArtifact NuGet 凭证提供商使用 C NuGet LI 工具简化了身份验证和配置。 CodeArtifact CodeArtifact 身份验证令牌的有效期最长为 12 小时。为了避免在使用 nuget 或 dotnet CLI 时手动刷新令牌,凭证提供程序会在当前令牌到期之前定期提取新令牌。

重要

要使用凭证提供商,请确保从您的nuget.config文件中清除任何现有 AWS CodeArtifact 证书,这些凭证可能是手动添加的,或者 NuGet 之前通过运行配置aws codeartifact login来添加的。

安装和配置 CodeArtifact NuGet 凭据提供商

dotnet
  1. NuGet.org使用以下dotnet命令从中下载该AWS.CodeArtifact.NuGet.CredentialProvider 工具的最新版本。

    dotnet tool install -g AWS.CodeArtifact.NuGet.CredentialProvider
  2. 使用codeartifact-creds install命令将凭据提供者复制到 NuGet 插件文件夹。

    dotnet codeartifact-creds install
  3. (可选):设置要与凭证提供者一起使用的 AWS 配置文件。如果未设置,则凭证提供程序将使用默认配置文件。有关 AWS CLI 配置文件的更多信息,请参阅已命名的配置文件

    dotnet codeartifact-creds configure set profile profile_name
nuget

执行以下步骤,使用 NuGet CLI 从 Amazon S3 存储桶安装 CodeArtifact NuGet 凭证提供商并对其进行配置。凭证提供者将使用默认 AWS CLI 配置文件,有关配置文件的更多信息,请参阅已命名配置文件

  1. 从 Amazon S3 存储桶下载最新版本的CodeArtifact NuGet 凭证提供商 (codeartifact-nuget-credentialprovider.zip)。

    要查看和下载早期版本,请参阅CodeArtifact NuGet 凭证提供者版本

  2. 解压缩该文件。

  3. 将该AWS.CodeArtifact.NuGetCredentialProvider文件夹从 netfx 文件夹复制到 %user_profile%/.nuget/plugins/netfx/ Windows 或 Linux 或 macOS ~/.nuget/plugins/netfx 上。

  4. 将该AWS.CodeArtifact.NuGetCredentialProvider文件夹从 netcore 文件夹复制到 %user_profile%/.nuget/plugins/netcore/ Windows、Linux 或 macOS ~/.nuget/plugins/netcore 上。

创建存储库并配置凭证提供程序后,您可以使用 nugetdotnet CLI 工具来安装和发布程序包。有关更多信息,请参阅消费来自的 NuGet 包裹 CodeArtifact将 NuGet 包发布到 CodeArtifact

方法 2:使用 login 命令配置 nuget 或 dotnet

中的codeartifact login命令将存储库端点和授权令牌 AWS CLI 添加到您的 NuGet 配置文件中,使 nuget 或 dotnet 能够连接到您的存储库。 CodeArtifact 这将修改位于 Windows 和/ ~/.config/NuGet/NuGet.Config%appdata%\NuGet\NuGet.Config的用户级 NuGet 配置~/.nuget/NuGet/NuGet.Config。 Mac/Linux有关 NuGet 配置的更多信息,请参阅常用 NuGet 配置

使用登录命令配置 nuget 或 dotnet
  1. 如中所述 AWS CLI,配置您的 AWS 凭据以与一起使用入门 CodeArtifact

  2. 确保 NuGet CLI 工具(nugetdotnet)已正确安装和配置。有关说明,请参阅 nugetdotnet 文档。

  3. 使用 CodeArtifact login命令获取凭证以供使用 NuGet。

    注意

    如果您要访问您拥有的域中的存储库,则无需包括 --domain-owner。有关更多信息,请参阅 Cross-account 域

    dotnet
    重要

    Linux 和 MacOS 用户:由于在非 Windows 平台上不支持加密,因此提取的凭证将以纯文本形式存储在配置文件中。

    aws codeartifact login --tool dotnet --domain my_domain --domain-owner 111122223333 --repository my_repo
    nuget
    aws codeartifact login --tool nuget --domain my_domain --domain-owner 111122223333 --repository my_repo

login 命令将会:

  • CodeArtifact 使用您的 AWS 证书获取授权令牌。

  • 使用 NuGet 包源的新条目更新您的用户级 NuGet 配置。指向您的 CodeArtifact 存储库端点的源将被调用domain_name/repo_name

调用 login 后的默认授权期为 12 小时,且必须调用 login 来定期刷新令牌。有关使用 login 命令创建的授权令牌的更多信息,请参阅 使用登录命令创建的令牌

创建存储库并配置身份验证后,可以使用 nugetdotnetmsbuild CLI 客户端来安装和发布程序包。有关更多信息,请参阅消费来自的 NuGet 包裹 CodeArtifact将 NuGet 包发布到 CodeArtifact

方法 3:不使用 login 命令来配置 nuget 或 dotnet

要进行手动配置,必须将存储库端点和授权令牌添加到 NuGet 配置文件中,以使 nuget 或 dotnet 能够连接到您的存储库。 CodeArtifact

手动配置 nuget 或 dotnet 以连接到您的存储库。 CodeArtifact

  1. 使用get-repository-endpoint AWS CLI 命令确定您的 CodeArtifact 存储库终端节点。

    aws codeartifact get-repository-endpoint --domain my_domain --domain-owner 111122223333 --repository my_repo --format nuget

    输出示例:

    { "repositoryEndpoint": "https://my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/nuget/my_repo/" }
  2. 使用get-authorization-token AWS CLI 命令从包管理器获取授权令牌以连接到您的存储库。

    aws codeartifact get-authorization-token --domain my_domain

    输出示例:

    { "authorizationToken": "eyJ2I...viOw", "expiration": 1601616533.0 }
  3. 通过附加/v3/index.json到步骤 1 get-repository-endpoint 中返回的 URL 来创建完整的存储库端点 URL。

  4. 将 nuget 或 dotnet 配置为使用步骤 1 中的存储库端点和步骤 2 中的授权令牌。

    注意

    要让 nuget 或 dotnet 成功连接到存储库,源网址必须以结尾。/v3/index.json CodeArtifact

    dotnet

    Linux 和 MacOS 用户:由于在非 Windows 平台上不支持加密,因此您必须在以下命令中添加 --store-password-in-clear-text 标志。请注意,这会将您的密码以纯文本形式存储在配置文件中。

    dotnet nuget add source https://my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/nuget/my_repo/v3/index.json --name packageSourceName --password eyJ2I...viOw --username aws
    注意

    要更新现有源,请使用 dotnet nuget update source 命令。

    nuget
    nuget sources add -name domain_name/repo_name -Source https://my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/nuget/my_repo/v3/index.json -password eyJ2I...viOw -username aws

    输出示例:

    Package source with Name: domain_name/repo_name added successfully.
    注意

    要使用双堆栈端点,请使用 codeartifact.region.on.aws 端点。

消费来自的 NuGet 包裹 CodeArtifact

配置 NuGet 好后 CodeArtifact,您就可以使用存储 CodeArtifact 库或其上游存储库之一中的 NuGet 软件包。

要使用 CodeArtifact 存储库或其上游存储库中的软件包版本dotnet,请运行以下命令,将其packageName替换为要使用的包的名称,并在 NuGet 配置文件中packageSourceName替换为存储 CodeArtifact 库的源名称。nuget如果您使用该login命令来配置 NuGet 配置,则源名称为domain_name/repo_name

注意

当请求软件包时, NuGet 客户端会缓存该软件包的哪个版本。由于存在这种行为,对于在所需版本变得可用之前请求的程序包,安装可能会失败。为避免此故障并成功安装现有的软件包,可以在安装之前使用nuget locals all --clear或清除 NuGet 缓存dotnet nuget locals all --clear,也可以通过提供选项或-NoCache选项来避免在installrestore命令期间使用缓存dotnetnuget --no-cache

dotnet
dotnet add package packageName --source packageSourceName
nuget
nuget install packageName -Source packageSourceName

安装程序包的特定版本

dotnet
dotnet add package packageName --version 1.0.0 --source packageSourceName
nuget
nuget install packageName -Version 1.0.0 -Source packageSourceName

有关更多信息,请参阅 Microsoft 文档中的使用 nuget.exe CLI 管理程序包使用 dotnet CLI 安装和管理程序包

NuGet.org通过将 CodeArtifact 存储库配置为外部连接,您可以通过存储库使用 NuGet 软件包NuGet.org。从中消耗的包NuGet.org会被摄取并存储在您的存储 CodeArtifact 库中。有关添加外部连接的更多信息,请参阅将 CodeArtifact 仓库连接到公共仓库

将 NuGet 包发布到 CodeArtifact

配置 NuGet 完后 CodeArtifact,即可使用nugetdotnet将包版本发布到 CodeArtifact 存储库。

要将软件包版本推送到 CodeArtifact 存储库,请运行以下命令,并在 NuGet 配置.nupkg文件中包含文件的完整路径和 CodeArtifact 存储库的源名称。如果您使用该login命令来配置 NuGet 配置,则源名称为domain_name/repo_name

注意

如果您没有要发布的 NuGet 包,则可以创建包。有关更多信息,请参阅 Microsoft 文档中的 程序包创建工作流程

dotnet
dotnet nuget push path/to/nupkg/SamplePackage.1.0.0.nupkg --source packageSourceName
nuget
nuget push path/to/nupkg/SamplePackage.1.0.0.nupkg -Source packageSourceName

CodeArtifact NuGet 凭证提供者参考

CodeArtifact NuGet 凭据提供商使您可以轻松地在 CodeArtifact 存储库中进行配置和身份验证 NuGet 。

CodeArtifact NuGet 凭证提供者命令

本节包括 CodeArtifact NuGet 凭证提供者的命令列表。这些命令必须加上前缀 dotnet codeartifact-creds,如以下示例所示。

dotnet codeartifact-creds command
  • configure set profile profile:将凭证提供者配置为使用提供的 AWS 配置文件。

  • configure unset profile:删除已配置的配置文件(如果已设置)。

  • install:将凭证提供程序复制到 plugins 文件夹。

  • install --profile profile:将凭据提供者复制到该plugins文件夹,并将其配置为使用提供的 AWS 配置文件。

  • uninstall:卸载凭证提供程序。这不会删除对配置文件的更改。

  • uninstall --delete-configuration:卸载凭证提供程序并删除对配置文件的所有更改。

CodeArtifact NuGet 凭证提供者日志

要为 CodeArtifact NuGet 凭据提供者启用日志记录,必须在环境中设置日志文件。凭证提供程序日志包含有用的调试信息,例如:

  • 用于建立连接的 AWS 配置文件

  • 任何身份验证错误

  • 如果提供的端点不是 CodeArtifact URL

设置 CodeArtifact NuGet 凭据提供者日志文件

export AWS_CODEARTIFACT_NUGET_LOGFILE=/path/to/file

设置日志文件后,任何 codeartifact-creds 命令都会将其日志输出附加到该文件的内容中。

CodeArtifact NuGet 凭证提供者版本

下表包含 CodeArtifact NuGet 凭据提供商的版本历史记录信息和下载链接。

版本 更改 发布日期 下载链接 (S3)

1.0.2(最新)

升级了依赖项

06/26/2024

下载 v1.0.2

1.0.1

增加了对 net5、net6 和 SSO 配置文件的支持

03/05/2022

下载 v1.0.1

1.0.0

CodeArtifact NuGet 凭证提供商的初始版本

11/20/2020

下载 v1.0.0