注: サイト管理者はそれぞれのサポートされているパッケージの種類を有効化あるいは無効化できるので、このパッケージの種類はインスタンスで利用できないかもしれません。 詳しくは、「Enterprise 向けのパッケージエコシステムサポートを設定する」を参照してください。
前提条件
-
RubyGemsは2.4.1以降を使わなければなりません。 RubyGemsのバージョンは、以下のようにすれば分かります。
gem --version
-
Bundler 1.6.4 以降が必要です。 Bundlerのバージョンは以下のようにすれば分かります。
$ bundle --version Bundler version 1.13.7
GitHub Packages への認証を行う
非公開パッケージ、内部パッケージ、公開パッケージを発行、インストール、削除するには、アクセス トークンが必要です。
personal access token を使って、GitHub Packages または GitHub Enterprise Server API の認証を受けることができます。 personal access token を作成するときは、必要に応じてさまざまなスコープをトークンに割り当てることができます。 personal access token のパッケージ関連のスコープの詳細については、「GitHub Packagesの権限について」を参照してください。
GitHub Actionsワークフロー内でGitHub Packagesレジストリに認証を受けるには、以下の方法が使えます。
GITHUB_TOKEN
では、ワークフロー リポジトリに関連付けられているパッケージを発行します。read:packages
以上のスコープが設定された personal access token では、他のプライベート リポジトリ (GITHUB_TOKEN
ではアクセスできない) に関連付けられているパッケージがインストールされます。
personal access token
で認証を行う
GitHub Packages でパッケージを発行およびインストールするには、適切なスコープで personal access token を使う必要があります。 詳しくは、「GitHub Packages の概要」を参照してください。
gem を公開してインストールするには、personal access tokenを使って GitHub Packages に対する認証を行うように、RubyGems または Bundler を構成できます。
新しい gem を公開するには、 ~/.gem/credentials ファイルを編集してpersonal access tokenを含めることによって、RubyGems で GitHub Packages に対して認証を行う必要があります。 このファイルが存在しない場合は、新しい ~/.gem/credentials ファイルを作成します。
たとえば、以下を含むように ~/.gem/credentials を作成または編集し、TOKEN をpersonal access tokenに置き換えます。
---
:github: Bearer TOKEN
gem をインストールするには、https://USERNAME:TOKEN@REGISTRY_URL/NAMESPACE/
を含むように gem ソースを更新することによって、GitHub Packages に対する認証を行う必要があります。 以下のように置き換えてください。
USERNAME
を GitHub に。TOKEN
をpersonal access token に。NAMESPACE
を、gem を含むリポジトリを所有している個人アカウントまたは Organization の名前に。REGISTRY_URL
を、インスタンスの Rubygems レジストリの URL に。 インスタンスで Subdomain Isolation が有効になっている場合は、rubygems.HOSTNAME
を使用します。 インスタンスで Subdomain Isolation が無効になっている場合は、HOSTNAME/_registry/rubygems
を使用します。 いずれの場合でも、HOSTNAME を GitHub Enterprise Server インスタンスのホスト名に置き換えてください。
パッケージをグローバルに使用できるようにする場合は、次のコマンドを実行して、レジストリをソースとして追加できます。
gem sources --add https://USERNAME:TOKEN@REGISTRY_URL/NAMESPACE/
Bundler で認証を行うには、personal access token を使うように Bundler を構成します。USERNAME は GitHub のユーザー名、TOKEN はpersonal access token、NAMESPACE は gem を含むリポジトリを所有している個人アカウントまたは Organization の名前に、それぞれ置き換えます。REGISTRY_URL
は、インスタンスの RubyGems レジストリの URL に置き換えます。 インスタンスで Subdomain Isolation が有効になっている場合は、rubygems.HOSTNAME
を使用します。 インスタンスで Subdomain Isolation が無効になっている場合は、HOSTNAME/_registry/rubygems
を使用します。 いずれの場合でも、HOSTNAME を GitHub Enterprise Server インスタンスのホスト名に置き換えてください。
bundle config https://REGISTRY_URL/NAMESPACE USERNAME:TOKEN
パッケージの公開
既定で、GitHub はパッケージと同じ名前の既存のリポジトリにパッケージを発行します。 たとえば、octo-org
組織に GEM_NAME
を発行すると、GitHub Packages によって gem が octo-org/GEM_NAME
リポジトリに発行されます。 gem の作成の詳細については、RubyGems のドキュメントの「gem の作成」を参照してください。
-
GitHub Packagesに認証を受けてください。 詳細については、「GitHub Packages への認証」を参照してください。
-
gemspec からパッケージをビルドして、gem パッケージを作成します。
GEM_NAME
を gem の名前に置き換えます。gem build GEM_NAME.gemspec
-
パッケージを GitHub Packages に公開します。
NAMESPACE
をプロジェクトを含むリポジトリを所有している個人アカウントまたは Organization の名前に、またGEM_NAME
を gem パッケージの名前に置き換えます。REGISTRY_URL
を、インスタンスの Rubygems レジストリの URL に置き換えます。 インスタンスで Subdomain Isolation が有効になっている場合は、rubygems.HOSTNAME
を使用します。 インスタンスで Subdomain Isolation が無効になっている場合は、HOSTNAME/_registry/rubygems
を使用します。 いずれの場合でも、HOSTNAME
を GitHub Enterprise Server インスタンスのホスト名に置き換えてください。注: gem の
metadata.gz
のファイルの圧縮されていない最大サイズは、2 MB 未満である必要があります。 その制限を超える gem をプッシュする要求は失敗します。$ gem push --key github \ --host https://REGISTRY_URL/NAMESPACE \ GEM_NAME-0.0.1.gem
同じリポジトリへの複数パッケージの公開
複数の gem を同じリポジトリに公開するには、GitHub リポジトリの URL を gem.metadata
の github_repo
フィールドに含めることができます。 このフィールドを含めた場合、GitHub でのリポジトリの照合は、gem 名を使うのではなく、この値に基づいて行われます。HOSTNAME を、お使いの GitHub Enterprise Server インスタンス のホスト名に置き換えます。
gem.metadata = { "github_repo" => "ssh://HOSTNAME/OWNER/REPOSITORY" }
パッケージのインストール
GitHub Packages の gem は、rubygems.org の gem を使うのと同じように使用できます。GitHub ユーザーまたは Organization をソースとして ~/.gemrc ファイルに追加するか、Bundler を使用して Gemfile を編集することで、GitHub Packages に対して認証を行う必要があります。
-
GitHub Packagesに認証を受けてください。 詳細については、「GitHub Packages への認証」を参照してください。
-
Bundler については、GitHub ユーザーまたは Organization をソースとして Gemfile に追加して、この新しいソースから gem をフェッチするようにします。 たとえば、指定したパッケージに対してのみ GitHub Packagesを使用する新しい
source
ブロックを Gemfile に追加できます。GEM_NAME
を、GitHub Packagesからインストールするパッケージに、NAMESPACE
を、インストールする gem を含むリポジトリを所有している個人アカウントまたは Organization に置き換えます。REGISTRY_URL
を、インスタンスの Rubygems レジストリの URL に置き換えます。 インスタンスで Subdomain Isolation が有効になっている場合は、rubygems.HOSTNAME
を使用します。 インスタンスで Subdomain Isolation が無効になっている場合は、HOSTNAME/_registry/rubygems
を使用します。 いずれの場合でも、HOSTNAME
を GitHub Enterprise Server インスタンスのホスト名に置き換えてください。source "https://rubygems.org" gem "rails" source "https://REGISTRY_URL/NAMESPACE" do gem "GEM_NAME" end
-
1.7.0 より前の Bundler バージョンの場合は、新しいグローバルな
source
を追加する必要があります。 Bundler の使用方法の詳細については、bundler.io のドキュメントを参照してください。source "https://REGISTRY_URL/NAMESPACE" source "https://rubygems.org" gem "rails" gem "GEM_NAME"
-
パッケージをインストールしてください。
gem install GEM_NAME --version "0.1.1"