ドキュメントには頻繁に更新が加えられ、その都度公開されています。本ページの翻訳はまだ未完成な部分があることをご了承ください。最新の情報については、英語のドキュメンテーションをご参照ください。本ページの翻訳に問題がある場合はこちらまでご連絡ください。

RubyGemsレジストリの利用

GitHub Packages にパッケージを公開し、GitHub Packages に保存されたパッケージを依存関係としてBundlerを使うRubyのプロジェクトで利用するよう、RubyGemsを設定できます。

GitHub PackagesはGitHub Free、GitHub Pro、GitHub FreeのOrganization、GitHub Team、GitHub Enterprise Cloud、GitHub Enterprise Server、GitHub AEで利用できます。


GitHub Packagesは、レガシーのリポジトリごとのプランを使っているアカウントが所有しているプライベートリポジトリでは利用できません。 また、レガシーのリポジトリごとのプランを使っているアカウントは、リポジトリごとに課金されるため、コンテナレジストリにはアクセスできません。 詳しい情報については「[GitHubの製品](/articles/github-s-products)」を参照してください。

ここには以下の内容があります:

デフォルトでは、GitHubはパッケージはそのままの名前で既存のリポジトリに公開されます。 たとえば、GitHubはOWNER/testというリポジトリ内のcom.example:testという名前のパッケージを公開します。

必要な環境

  • 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 Packages への認証を行う

GitHub Packagesでパッケージを公開、インストール、削除するにはアクセストークンが必要です。

GitHub Packages、あるいはGitHub APIで認証を受けるのに、個人のアクセストークン(PAT)が利用できます。 個人トークンを作成する際には、必要に応じて様々なスコープをトークンに割り当てできます。 PATに関するパッケージ関連のスコープについての詳しい情報は、「GitHub Packagesの権限について」を参照してください。

GitHub Actionsワークフロー内でGitHub Packagesレジストリに認証を受けるには、以下の方法が使えます。

  • GITHUB_TOKENを使って、ワークフローリポジトリに関連づけられたパッケージを公開。
  • PATで他のプライベートリポジトリ(これにはGITHUB_TOKENがアクセスできない)に関連づけられたパッケージをインストール。

GitHub Actionsワークフローで使われるGITHUB_TOKENに関する詳しい情報については「ワークフローでの認証」を参照してください。

個人アクセストークンでの認証

GitHub Packages内でパッケージを公開及びインストールするためには、適切なスコープで個人アクセストークンを使わなければなりません。 詳しい情報については「GitHub Packagesについて」を参照してください。

gemの公開なら~/.gem/credentialsファイルを編集することで、単一のgemのインストールなら~/.gemrcファイルを編集することで、Bundlerを使って1つ以上のgemを追跡してインストールするなら~/.gemrcファイルを編集することで、RubyGemsでGitHub Packagesに認証を受けることができます。

新しいgemsを公開するには、~/.gem/credentialsファイルを編集して個人アクセストークンを含めることによって、RubyGemsでGitHub Packagesに認証を受けなければなりません。 ~/.gem/credentialsファイルが存在しない場合、新しく作成してください。

たとえば、~/.gem/credentialsを作成もしくは編集して、以下を含めてください。TOKENは個人アクセストークンで置き換えてください。

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

gemをインストールするには、プロジェクトの~/.gemrcファイルを編集し、https://USERNAME:TOKEN@rubygems.pkg.github.com/OWNER/を含めることによってGitHub Packagesの認証を受けなければなりません。 以下のように置き換えてください。

  • USERNAMEをGitHubのユーザ名で。
  • TOKENを個人アクセストークンで。
  • OWNER を、プロジェクトを含むリポジトリを所有しているユーザまたはOrganizationアカウント名で。

~/.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をプロジェクトを含むリポジトリを所有しているユーザもしくはOrganizationアカウント名で置き換えます。

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

パッケージを公開する

デフォルトでは、GitHubはパッケージはそのままの名前で既存のリポジトリに公開されます。 たとえば、octo-gemocto-orgというOrganizationに公開するなら、GitHub Packagesはそのgemをocto-org/octo-gemリポジトリに公開します。 gem の作成に関する詳しい情報については、RubyGems ドキュメンテーションの「gem の作成」を参照してください。

パッケージを公開した後は、GitHub上でそのパッケージを見ることができます。 詳しい情報については「パッケージの表示」を参照してください。

  1. GitHub Packagesに認証を受けてください。 詳しい情報については「GitHub Packagesへの認証を行う」を参照してください。

  2. gemspecからパッケージをビルドして、.gemパッケージを作成してください。

    gem build OCTO-GEM.gemspec
  3. GitHub Packagesにパッケージを公開してください。 OWNERをプロジェクトを含むリポジトリを所有しているユーザもしくはOrganizationアカウント名で、OCTO-GEMをgemパッケージ名で置き換えます。

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

同じリポジトリへの複数パッケージの公開

複数のgemを同じリポジトリに公開したい場合は、GitHubリポジトリのgem.metadataにあるgithub_repoフィールドに、URL を記述できます。 このフィールドを含めた場合、GitHub は、gem 名の代わりに、この値を元にしてリポジトリを照合します。

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

パッケージをインストールする

GitHub Packagesからのgemsは、rubygems.orgからのgemsを使うのと同じように利用できます。 GitHubユーザあるいはOrganizationを~/.gemrcファイルにソースとして追加するか、Bundlerを使ってGemfileを編集することによって、GitHub Packagesに認証を受けなければなりません。

  1. GitHub Packagesに認証を受けてください。 詳しい情報については「GitHub Packagesへの認証を行う」を参照してください。

  2. Bundlerについては、GitHubユーザもしくはOrganizationをソースとしてGemfileに追加して、この新しいソースからgemsをフェッチするようにしてください。 たとえば、指定したパッケージに対してのみGitHub Packagesを使用するGemfileに新しいsourceブロックを追加できます。GEM NAMEを GitHub Packagesからインストールするパッケージで、OWNERをインストールしたいgemを含むリポジトリを所有するユーザまたはOrganizationで置き換えてください。

    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"

参考リンク

このドキュメントは役立ちましたか?

Privacy policy

これらのドキュメントを素晴らしいものにするのを手伝ってください!

GitHubのすべてのドキュメントはオープンソースです。間違っていたり、はっきりしないところがありましたか?Pull Requestをお送りください。

コントリビューションを行う

OR, コントリビューションの方法を学んでください。

問題がまだ解決していませんか?

GitHubコミュニティで質問する サポートへの連絡