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

配置 RubyGems 用于 GitHub Package Registry

您可以配置 RubyGems 以通过 GitHub 包注册表 发布包并将该包用作含 Bundler 的 Ruby 项目中的依赖项。

GitHub 包注册表 目前提供有限的公开测试版。更多信息请参阅“关于 GitHub 包注册表”。

本文内容

基本要求

向 GitHub 包注册表 验证

必须使用具有 read:packageswrite:packages 作用域的个人访问令牌才能通过 RubyGems 在 GitHub 包注册表 中发布和删除公共包。 对于私有仓库,您的个人访问令牌还必须具有 repo 作用域。 更多信息请参阅“创建用于命令行的个人访问令牌”。

  1. 通过编辑 ~/.gem/credentials 或创建它(如果它不存在),配置 npm 在推送新 gem 时使用令牌。 将 TOKEN 替换为您的个人访问令牌并添加此行:

    ---
    :github: Bearer TOKEN
  2. 配置 Bundler 使用您的令牌。 Replace OWNER with the GitHub user or organization name that contains the repository where you want to publish the gem, and enter your GitHub username and personal access token.

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

发布包

You can use the gem push command to publish a package to GitHub 包注册表.

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

默认情况下,包名称用于确定要将 gem 发布到的仓库。 For example a gem called 'mygem' published to the 'my-org' organization is published to the my-org/mygem GitHub repository.

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

例如:

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

有关创建 gem 的更多信息,请参阅 RubyGems 文档中的“创建自己的 gem”。

您可以通过以下 URL 访问您的包(使用您的 GitHub 用户或组织名称替换 OWNER,使用您的仓库名称替换 REPOSITORY):

https://github.com/OWNER/REPOSITORY/packages

接收包注册表事件

在发布或更新包时,您可以接收 web 挂钩事件。更多信息请参阅“GitHub 开发者文档中的 RegistryPackageEvent”。

安装包

在项目中使用来自 GitHub 包注册表 的 gem 类似于使用来自 rubygems.org 的 gem。 您可以将 GitHub 用户或组织添加为 Gemfile 中的源,然后从其中获取 gem。

例如,以下是一个简单的 Ruby on Rails 应用程序的 Gemfile

source "https://rubygems.org"

gem "rails"

为包含 gem 所在仓库的 GitHub 用户或组织添加新 source 块。 例如,要修改相同的 rails 应用程序 Gemfile

source "https://rubygems.org"

gem "rails"

source "https://rubygems.pkg.github.com/OWNER" do
  gem "GEM NAME"
end

对 1.7.0 之前的版本,改为新增全局 source

source "https://rubygems.pkg.github.com/OWNER"
source "https://rubygems.org"

gem "rails"
gem "GEM NAME"

当您 bundle install 时,将自动使用此前通过 bundle config 配置的凭据。 有关使用 bundler 的更多信息,请参阅 bundler.io 文档

删除包

To avoid breaking projects that may depend on your packages, GitHub 包注册表 does not support deleting published versions of a package or an entire published package for public repositories. Under special circumstances, such as for legal reasons or to conform with GDPR standards, you can request deleting a package through GitHub 支持. Contact GitHub 支持 using our contact form and the subject line "GitHub 包注册表."

You can delete private packages via GitHub's API. For more information, see "Access to package version deletion" in GitHub 开发者文档.

问问别人

找不到要找的内容?

联系我们