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

GitHub パッケージレジストリで利用するために RubyGems を設定する

パッケージを GitHub パッケージレジストリ で公開して、そのパッケージを Bundler で Ruby プロジェクトの依存関係として利用するよう RubyGems を設定できます。

GitHub パッケージレジストリ は現在、限定パブリックベータとして利用できます。ベータ期間中は、高価なワークフローやコンテンツに GitHub パッケージレジストリ を利用することは避けてください。詳細は「GitHub パッケージレジストリ について」を参照してください。

本記事の内容:

必要な環境

$ gem --version
$ bundle --version
Bundler version 1.13.7
$ gem install keycutter

GitHub パッケージレジストリ への認証を行う

RubyGems で GitHub パッケージレジストリ のパブリックパッケージを公開および削除するには、read:packageswrite:packages のスコープ付き個人アクセストークンを使う必要があります。 リポジトリがプライベートである場合、個人アクセストークンも repo のスコープを持っている必要があります。 詳細は「コマンドライン用の個人アクセストークンを作成する」を参照してください。

  1. ~/.gem/credentials を編集するか、ない場合は作成することで、新しいパッケージをプッシュする際にあなたのトークンを利用するよう gem を設定できます。 以下の行を追加してください。TOKEN は、個人アクセストークンに置き換えてください:


    :github: Bearer TOKEN

    2. Bundler があなたのトークンを利用するよう設定します。 `OWNER` を、gem を公開したいリポジトリを含む GitHub ユーザまたは Organization 名に置き換え、あなたの GitHub ユーザ名および個人アクセストークンを入力してください。
    
    <pre><code class="hljs language-shell">$ bundle config https://rubygems.pkg.github.com/<em>OWNER USERNAME:TOKEN</em></code></pre>
    
    ### パッケージを公開する
    
    `gem push` コマンドで、パッケージを GitHub パッケージレジストリ に公開できます。
    
    <pre><code class="hljs language-shell">$ gem push --key github \
    --host https://rubygems.pkg.github.com/<em>OWNER</em> \
    <em>YOUR-GEM</em>.gem
    

デフォルトでは、gem を公開するリポジトリの決定に、パッケージ名が使われます。 たとえば、'my-org' Organization に公開される、'mygem' という名前の gem は、my-org/mygem GitHub リポジトリに公開されます。 GitHub リリースおよび関連する Git タグが、gem のバージョンに対して存在していない場合には、自動的に作成されます。

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

例:

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

gem の作成に関する詳しい情報については、RubyGems ドキュメンテーションの「gem の作成」を参照してください。

パッケージには、以下の URL からアクセスできます。OWNER をあなたの GitHub ユーザもしくは Organization 名に、REPOSITORY をリポジトリ名に置き換えてください。https://github.com/OWNER/REPOSITORY/packages

### パッケージレジストリイベントを受信する
パッケージが 'published' あるいは 'updated' になったときに、webhook イベントを受信することができます。詳細は GitHub 開発者ドキュメンテーション の [RegistryPackageEvent](https://developer.github.com/v3/activity/events/types/#registrypackageevent) を参照してください。

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

プロジェクトの GitHub パッケージレジストリ から gem を利用する方法は、rubygems.org から gem を利用する方法に似ています。 Gemfile の GitHub ユーザまたは Organization をソースとして追加し、そこから gem をフェッチできます。

例として、単純な Ruby on Rails アプリの `Gemfile` を以下に示します。

    source "https://rubygems.org"
    
    gem "rails"
    

gem があるリポジトリを含む GitHub ユーザまたは Organization に、新しい `source` ブロックを追加します。 例えば、同じ Rails アプリ の `Gemfile` を変更するには、以下を実行します:

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

Bundler のバージョンが 1.7.0 未満の場合は、上記の代わりに、以下の新しいグローバル `source` を追加します:

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

`bundle install` を実行すると、上記で `bundle install` により設定した認証情報が自動的に利用されます。 Bundler の使い方に関する詳しい情報については、[bundler.io のドキュメンテーション](http://bundler.io/v1.5/gemfile.html)を参照してください。

### パッケージを削除する

あなたのパッケージに依存しているかもしれないプロジェクトを壊すことがないよう、GitHub パッケージレジストリはパッケージの削除や、パッケージのバージョンの削除をサポートしていません。法的な理由やGDPR標準といった特別な状況下では、GitHub Supportを通じてパッケージの削除をリクエストできます。[連絡フォーム](https://github.com/contact?form%5Bsubject%5D=Re:%20GitHub%20Package%20Registry)を使って「GitHub パッケージレジストリ」というタイトル行でGitHub Supportに連絡してください。

担当者にお尋ねください

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

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