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

GitHub Packagesで利用するために RubyGems を設定する

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

GitHub PackagesはGitHub Free、GitHub Pro、GitHub FreeのOrganization、GitHub Team、GitHub Enterprise Cloud、GitHub Oneで利用できます。 GitHub Packagesは、レガシーのリポジトリごとのプランを使っているアカウントが所有しているプライベートリポジトリでは利用できません。 詳しい情報については「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 Packages への認証を行う

      GitHub Packagesでパッケージを公開、インストール、削除するにはアクセストークンが必要です。 GitHub Packagesに直接、あるいはGitHub APIでユーザ名で認証を受けるのに、個人のアクセストークンが利用できます。 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は個人アクセストークンで置き換えてください。

      ---
      :github: Bearer TOKEN

      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アカウント名で置き換えてください。 大文字はサポートされていないため、仮にGitHubのユーザあるいはOrganization名が大文字を含んでいても、リポジトリオーナーには小文字を使わなければなりません。

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

      GITHUB_TOKENでの認証

      GitHub Actionsワークフローを使っているなら、GITHUB_TOKENを使い、個人アクセストークンを保存したり管理したりする必要なくGitHub Packages内のパッケージの公開や利用ができます。 詳しい情報については「GITHUB_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
  1. 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"

参考リンク

担当者にお尋ねください

探しているものが見つからなかったでしょうか?

弊社にお問い合わせください