CodeArtifact 与 nuget 或 dotnet CLI 配合使用 - CodeArtifact

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

CodeArtifact 与 nuget 或 dotnet CLI 配合使用

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

配置 nuget 或 dotnet CLI

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

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

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

重要

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

安装和配置 CodeArtifact NuGet 凭据提供程序

dotnet
  1. 下载最新版本的 AWS。 CodeArtifact。 NuGet。 CredentialProvider 来自 NuGet .org 的工具,使用以下dotnet命令。

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

    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. 复制 A WS。 CodeArtifact。 NuGetCredentialProvidernetfx 文件夹到 %user_profile%/.nuget/plugins/netfx/ Windows、Linux 或 macOS ~/.nuget/plugins/netfx 上的文件夹。

  4. 复制 A WS。 CodeArtifact。 NuGetCredentialProvidernetcore 文件夹到 %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~/.nuget/NuGet/NuGet.Config Mac/Linux %appdata%\NuGet\NuGet.Config 的用户级 NuGet 配置。有关 NuGet 配置的更多信息,请参阅常用 NuGet 配置

使用 login 命令配置 nuget 或 dotnet
  1. 配置您的 AWS 凭证以便与一起使用 AWS CLI,如中所述开始使用 CodeArtifact

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

  3. 使用 CodeArtifact login命令获取用于的凭据 NuGet。

    注意

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

    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 命令创建的授权令牌的更多信息,请参阅 使用 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 附加到 get-repository-endpoint 在步骤 3 中返回的 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.

使用来自的 NuGet 包裹 CodeArtifact

配置 NuGet 完毕后 CodeArtifact,即可使用存储在存储 CodeArtifact 库或其上游存储库中的 NuGet 软件包。

要使用或使用 CodeArtifact 存储库或其上游存储库中的软件包版本dotnet,请运行以下命令,将 packeName 替换为要使用的软件包的packageSourceName名称以及 NuGet 配置 CodeArtifact 文件中存储库的源名称。nuget如果您使用login命令配置 NuGet 配置,则源名称为 d omain _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 安装和管理程序包

您可以通过 CodeArtifact 存储库使用 NuGet.org 中的 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