👋 We've unified all of GitHub's product documentation in one place! Check out the content for REST API, GraphQL API, and Developers. Learn more on the GitHub blog.


我们经常发布文档更新,此页面的翻译可能仍在进行中。有关最新信息,请访问英文文档。如果此页面上的翻译有问题,请告诉我们

配置 RubyGems 用于 GitHub 包

您可以配置 RubyGems 以将包发布到 GitHub 包注册表 并将存储在 GitHub 包注册表 上的包用作带 Bundler 的 Ruby 项目中的依赖项。

GitHub 包注册表 可用于 GitHub Free、GitHub Pro、组织的 GitHub Free、GitHub Team、GitHub Enterprise Cloud 和 GitHub One。 GitHub 包注册表 不适用于使用旧版按仓库计划的帐户所拥有的私有仓库。 更多信息请参阅“GitHub 的产品”。

本文内容

基本要求

  • 必须拥有 rubygems 2.4.1 或更高版本. 要查找您的 rubygems 版本:

    $ gem --version
    • 必须拥有 bundler 1.6.4 或更高版本. 要查找您的 Bundler 版本:

      $ bundle --version
      Bundler version 1.13.7
    • 安装 keycutter 以管理多个凭据. 要安装 keycutter:

      $ gem install keycutter

      向 GitHub 包注册表 验证

      您需要访问令牌才能发布、安装和删除 GitHub 包注册表 中的包。 您可以使用个人访问令牌直接向 GitHub 包注册表 或 GitHub API 验证您的用户名。 您可以使用 GITHUB_TOKEN 以通过 GitHub 操作 工作流程进行身份验证。

      使用个人访问令牌进行身份验证

      您必须使用具有适当范围的个人访问令牌才可在 GitHub 包注册表 中发布和安装。 更多信息请参阅“关于 GitHub 包注册表”。

      通过编辑用于发布 gem 的 ~/.gem/credentials 文件、编辑用于安装单个 gem 的 ~/.gemrc 文件或使用用于跟踪和安装一个或多个 gem 的 Bundler,使用 RubyGems 向 GitHub 包注册表 验证。

      要发布新的 gem,您需要通过编辑 ~/.gem/credentials 文件以包含您的个人访问令牌,使用 RubyGems 向 GitHub 包注册表 验证。 如果 ~/.gem/credentials 文件不存在,请新建该文件。

      例如,您要创建或编辑 ~/.gem/credentials 以包含以下内容,将 TOKEN 替换为您的个人访问令牌。

      ---
      :github: Bearer TOKEN

      要安装 gem,您需要通过编辑项目的 ~/.gemrc 文件以包含 https://USERNAME:TOKEN@rubygems.pkg.github.com/OWNER/,向 GitHub 包注册表 验证。 必须:

    • USERNAME 替换为您的 GitHub 用户名。

    • TOKEN 替换为您的个人访问令牌。

    • OWNER 替换为拥有项目所在仓库的用户或组织帐户的名称。

      如果您没有 ~/.gemrc 文件,请使用此示例创建新的 ~/.gemrc 文件。

      ---
      :backtrace: false
      :bulk_threshold: 1000
      :sources:
      
    • https://rubygems.org/

    • https://USERNAME:TOKEN@rubygems.pkg.github.com/OWNER/ :update_sources: true :verbose: true

      要使用 Bundler 进行身份验证,请配置 Bundler 使用您的个人访问令牌,将 USERNAME 替换为您的 GitHub 用户名,将 TOKEN 替换为您的个人访问令牌,将 OWNER 替换为拥有项目所在仓库的用户或组织帐户的名称。 由于不支持大写字母,因此,即使您的 GitHub 用户或组织名称中包含大写字母,也必须对仓库所有者使用小写字母。

      $ bundle config https://rubygems.pkg.github.com/OWNER USERNAME:TOKEN

      使用 GITHUB_TOKEN 进行身份验证

      如果您使用的是 GitHub 操作 工作流程,可以使用 GITHUB_TOKEN 发布和使用 GitHub 包注册表 中的软件包,而无需存储和管理个人访问令牌。 更多信息请参阅“使用 GITHUB_TOKEN 验证身份”。

      发布包

      默认情况下,GitHub 将包发布到名称与包相同的现有仓库中。 例如,您将 octo-gem 发布到 octo-org 组织时,GitHub 包注册表 将 gem 发布到 octo-org/octo-gem 仓库。 有关创建 gem 的更多信息,请参阅 RubyGems 文档中的“创建自己的 gem”。

      在发布包后,您可以在 GitHub 上查看该包。 更多信息请参阅“查看包”。

    1. 向 GitHub 包注册表 验证。 更多信息请参阅“向 GitHub 包注册表 验证”。
    2. gemspec 构建包以创建 .gem 包。
      gem build OCTO-GEM.gemspec
  1. 将包发布到 GitHub 包注册表,将 OWNER 替换为拥有项目所在仓库的用户或组织帐户的名称,将 OCTO-GEM 替换为 gem 包的名称。

    $ gem push --key github \
    --host https://rubygems.pkg.github.com/OWNER \
    OCTO-GEM-0.0.1.gem

将多个包发布到同一个仓库

要将多个 gem 发布到同一个仓库,您可以在 gem.metadatagithub_repo 字段中包含 GitHub 仓库的 URL。 如果包含此字段,GitHub 将根据此值匹配仓库,而不是根据 gem 名称。

gem.metadata = { "github_repo" => "ssh://github.com/OWNER/REPOSITORY" }

安装包

您可以使用来自 GitHub 包注册表 的 gem,就像使用来自 rubygems.org 的 gem 一样。 您需要通过将您的 GitHub 用户或组织添加为 ~/.gemrc 文件中的源,或者使用 Bundler 并编辑 Gemfile,向 GitHub 包注册表 验证。

  1. 向 GitHub 包注册表 验证。 更多信息请参阅“向 GitHub 包注册表 验证”。

  2. 对于 Bundler,请将您的 GitHub 用户或组织添加为 Gemfile 中的源,以便从这个新源获取 gem。 例如,您可以将新的 source 块添加到仅对您指定的包使用 GitHub 包注册表 的 Gemfile,将 GEM NAME 替换为要从 GitHub 包注册表 安装的包,将 OWNER 替换为拥有要安装的 gem 所在仓库的用户或组织。

    source "https://rubygems.org"
    
    gem "rails"
    
    source "https://rubygems.pkg.github.com/OWNER" do
      gem "GEM NAME"
    end
    
  3. 对于 1.7.0 之前的 Bundler 版本,您需要增加新的全局 source。 有关使用 Bundler 的更多信息,请参阅 bundler.io 文档

    source "https://rubygems.pkg.github.com/OWNER"
    source "https://rubygems.org"
    
    gem "rails"
    gem "GEM NAME"
    
  4. 安装包:

    $ gem install octo-gem --version "0.1.1"

延伸阅读

问问别人

找不到要找的内容?

联系我们