View a markdown version of this page

配置 RubyGems 和使用 Bundler CodeArtifact - CodeArtifact

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

配置 RubyGems 和使用 Bundler CodeArtifact

在中创建存储库后 CodeArtifact,可以使用 RubyGems (gem) 和 Bundler (bundle) 来安装和发布 gem。本主题介绍如何配置包管理器以使用存储库进行身份验证和使用 CodeArtifact 存储库。

使用配置 RubyGems (gem) 和捆绑器 (bundle) CodeArtifact

要使用 RubyGems (gem) 或 Bundler (bundle) 将 gem 发布到或使用其中的宝石 AWS CodeArtifact,您首先需要使用 CodeArtifact 存储库信息(包括访问它的凭据)对其进行配置。按照以下步骤之一中的步骤,使用您的 CodeArtifact 存储库终端节点信息和凭据配置和 bundle CLI 工具。gem

使用控制台说明进行配置 RubyGems 和捆绑器

您可以使用控制台中的配置说明将 Ruby 包管理器连接到 CodeArtifact 存储库。控制台说明提供了自定义命令,您可以运行这些命令来设置软件包管理器,而无需查找和填写您的 CodeArtifact 信息。

  1. https://console.aws.amazon.com/codesuite/codeartifact /hom AWS CodeArtifact e 打开控制台。

  2. 在导航窗格中,选择存储库,然后选择要用于安装或发布 Ruby Gem 的存储库。

  3. 选择查看连接说明

  4. 选择操作系统。

  5. 选择要在 CodeArtifact 存储库中配置的 Ruby 包管理器客户端。

  6. 按照生成的说明来配置程序包管理器客户端,以便从存储库安装 Ruby Gem 或将 Ruby Gem 发布到存储库。

手动配置 RubyGems 和捆绑器

如果您无法或不想使用控制台中的配置说明,则可以按照以下说明手动将 Ruby 包管理器连接到 CodeArtifact 存储库。

  1. 在命令行中,使用以下命令获取 CodeArtifact 授权令牌并将其存储在环境变量中。

    • my_domain用您的 CodeArtifact 域名替换。

    • 111122223333替换为域名所有者的 AWS 账户 ID。如果您要访问您拥有的域中的存储库,则无需包括 --domain-owner。有关更多信息,请参阅 Cross-account 域名

    macOS and Linux
    export CODEARTIFACT_AUTH_TOKEN=`aws codeartifact get-authorization-token --domain my_domain --domain-owner 111122223333 --query authorizationToken --output text`
    Windows
    • Windows(使用默认命令 shell):

      for /f %i in ('aws codeartifact get-authorization-token --domain my_domain --domain-owner 111122223333 --query authorizationToken --output text') do set CODEARTIFACT_AUTH_TOKEN=%i
    • 窗户 PowerShell:

      $env:CODEARTIFACT_AUTH_TOKEN = aws codeartifact get-authorization-token --domain my_domain --domain-owner 111122223333 --query authorizationToken --output text
  2. 要将 Ruby gem 发布到您的存储库,请使用以下命令获取 CodeArtifact 存储库的端点并将其存储在RUBYGEMS_HOST环境变量中。gem CLI 使用此环境变量来确定 Gem 的发布位置。

    注意

    或者,您可以不使用 RUBYGEMS_HOST 环境变量,而是在使用 gem push 命令时为存储库端点提供 --host 选项。

    • my_domain用您的 CodeArtifact 域名替换。

    • 111122223333替换为域名所有者的 AWS 账户 ID。如果您要访问您拥有的域中的存储库,则无需包括 --domain-owner。有关更多信息,请参阅 Cross-account 域名

    • my_repo替换为您的 CodeArtifact 存储库名称。

    macOS and Linux
    export RUBYGEMS_HOST=`aws codeartifact get-repository-endpoint --domain my_domain --domain-owner 111122223333 --repository my_repo --format ruby --query repositoryEndpoint --output text | sed 's:/*$::'`
    Windows

    以下命令可检索存储库端点,去除尾部 /,然后将其存储在一个环境变量中。

    • Windows(使用默认命令 shell):

      for /f %i in ('aws codeartifact get-repository-endpoint --domain my_domain --domain-owner 111122223333 --repository my_repo --format ruby --query repositoryEndpoint --output text') do set RUBYGEMS_HOST=%i set RUBYGEMS_HOST=%RUBYGEMS_HOST:~0,-1%
    • 窗户 PowerShell:

      $env:RUBYGEMS_HOST = (aws codeartifact get-repository-endpoint --domain my_domain --domain-owner 111122223333 --repository my_repo --format ruby --query repositoryEndpoint --output text).TrimEnd("/")

    以下 URL 是一个示例存储库端点:

    https://my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/ruby/my_repo/
    注意

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

  3. 要将 Ruby gem 发布到您的存储库,您必须 RubyGems 通过编辑~/.gem/credentials文件 CodeArtifact 以包含您的身份验证令牌来进行身份验证。如果 ~/.gem/ 目录或 ~/.gem/credentials 文件不存在,则创建该目录和文件。

    macOS and Linux
    echo ":codeartifact_api_key: Bearer $CODEARTIFACT_AUTH_TOKEN" >> ~/.gem/credentials
    Windows
    • Windows(使用默认命令 shell):

      echo :codeartifact_api_key: Bearer %CODEARTIFACT_AUTH_TOKEN% >> %USERPROFILE%/.gem/credentials
    • 窗户 PowerShell:

      echo ":codeartifact_api_key: Bearer $env:CODEARTIFACT_AUTH_TOKEN" | Add-Content ~/.gem/credentials
  4. 要使用 gem 从存储库安装 Ruby Gem,必须将存储库端点信息和身份验证令牌添加到 .gemrc 文件。您可以将其添加到全局文件(~/.gemrc)或项目 .gemrc 文件。您必须向中添加的 CodeArtifact 信息.gemrc是存储库端点和身份验证令牌的组合。它的格式如下:

    https://aws:${CODEARTIFACT_AUTH_TOKEN}@my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/ruby/my_repo/
    • 对于身份验证令牌,您可以使用在上一步中设置的 CODEARTIFACT_AUTH_TOKEN 环境变量。

    • 要获取存储库端点,您可以读取之前设置的 RUBYGEMS_HOST 环境变量的值,也可以使用以下 get-repository-endpoint 命令根据需要替换这些值:

      aws codeartifact get-repository-endpoint --domain my_domain --domain-owner 111122223333 --repository my_repo --format ruby --query repositoryEndpoint --output text

    获取端点后,使用文本编辑器在适当位置添加 aws:${CODEARTIFACT_AUTH_TOKEN}@。创建存储库端点和身份验证令牌字符串后,使用 echo 命令将其添加到 .gemrc 文件的 :sources: 部分,具体操作如下:

    警告

    CodeArtifact 不支持使用gem sources -add命令将存储库添加为源。必须将源直接添加到文件。

    macOS and Linux
    echo ":sources: - https://aws:${CODEARTIFACT_AUTH_TOKEN}@my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/ruby/my_repo/" > ~/.gemrc
    Windows
    • Windows(使用默认命令 shell):

      echo ":sources: - https://aws:%CODEARTIFACT_AUTH_TOKEN%@my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/ruby/my_repo/" > "%USERPROFILE%\.gemrc"
    • 窗户 PowerShell:

      echo ":sources: - https://aws:$env:CODEARTIFACT_AUTH_TOKEN@my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/ruby/my_repo/" | Add-Content ~/.gemrc
  5. 要使用 Bundler,必须通过运行以下 bundle config 命令,使用存储库端点 URL 和身份验证令牌来配置 Bundler:

    macOS and Linux
    bundle config $RUBYGEMS_HOST aws:$CODEARTIFACT_AUTH_TOKEN
    Windows
    • Windows(使用默认命令 shell):

      bundle config %RUBYGEMS_HOST% aws:%CODEARTIFACT_AUTH_TOKEN%
    • 窗户 PowerShell:

      bundle config $Env:RUBYGEMS_HOST aws:$Env:CODEARTIFACT_AUTH_TOKEN

现在,您已经在存储库中配置了 RubyGems (gembundle) 和 Bundler (),您可以使用它们来发布和使用 CodeArtifact 存储库中的 Ruby gem。

从中安装 Ruby 宝石 CodeArtifact

使用以下过程使用gembundle CLI 工具从 CodeArtifact 存储库中安装 Ruby gem。

使用 gem 安装 Ruby Gem

您可以使用 RubyGems (gem) CLI 从 CodeArtifact 存储库中快速安装特定版本的 Ruby gem。

使用以下命令从 CodeArtifact 存储库安装 Ruby gem gem
  1. 如果还没有,请按照中的步骤使用配置 RubyGems (gem) 和捆绑器 (bundle) CodeArtifactgem CLI 配置为使用具有正确凭据的 CodeArtifact 仓库。

    注意

    生成的授权令牌有效期为 12 小时。如果自创建令牌以来已过去 12 小时,则需要创建一个新的令牌。

  2. 使用以下命令从以下位置安装 Ruby gem CodeArtifact:

    gem install my_ruby_gem --version 1.0.0

使用 bundle 安装 Ruby Gem

可以使用 Bundler(bundle)CLI 来安装已在 Gemfile 中配置的 Ruby Gem。

使用以下命令从 CodeArtifact 存储库安装 Ruby gem bundle
  1. 如果还没有,请按照中的步骤使用配置 RubyGems (gem) 和捆绑器 (bundle) CodeArtifactbundle CLI 配置为使用具有正确凭据的 CodeArtifact 仓库。

    注意

    生成的授权令牌有效期为 12 小时。如果自创建令牌以来已过去 12 小时,则需要创建一个新的令牌。

  2. 将您的 CodeArtifact 存储库终端节点 URL 添加到 a 中,source以便从您的Gemfile CodeArtifact 存储库及其上游安装已配置的 Ruby gem。

    source "https://my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/ruby/my_repo/" gem 'my_ruby_gem'
  3. 使用以下命令,按照 Gemfile 中的说明来安装 Ruby Gem:

    bundle install

将 Ruby 宝石发布到 CodeArtifact

使用以下过程通过 gem CLI 将 Ruby gem 发布到 CodeArtifact 存储库。

  1. 如果还没有,请按照中的步骤使用配置 RubyGems (gem) 和捆绑器 (bundle) CodeArtifactgem CLI 配置为使用具有正确凭据的 CodeArtifact 仓库。

    注意

    生成的授权令牌有效期为 12 小时。如果自创建令牌以来已过去 12 小时,则需要创建一个新的令牌。

  2. 使用以下命令将 Ruby gem 发布到 CodeArtifact 存储库。请注意,如果您未设置RUBYGEMS_HOST环境变量,则必须在--host选项中提供存储 CodeArtifact 库终端节点。

    gem push --key codeartifact_api_key my_ruby_gem-0.0.1.gem