注: サイト管理者はそれぞれのサポートされているパッケージの種類を有効化あるいは無効化できるので、このパッケージの種類はインスタンスで利用できないかもしれません。 詳細については、「エンタープライズ向けのパッケージ サポートの構成」を参照してく� さい。
前提条件
-
RubyGemsは2.4.1以降を使わなければなりません。 RubyGemsのバージョンは、以下のようにすれば分かります。
$ gem --version
-
Bundler 1.6.4 以降が必要です。 Bundlerのバージョンは以下のようにすれば分かります。
$ bundle --version Bundler version 1.13.7
GitHub Packages への認証を行う
パッケージを発行、インストール、および削除するには、アクセス トークンが必要です。
個人アクセス トークン (PAT) を使用し、GitHub Packages または GitHub Enterprise Server API の認証を受けることができます。 個人トークンを作成する際には、必要に応じて様々なスコープをトークンに割り当てできます。 PAT のパッケージ関連のスコープの詳細については、「GitHub パッケージのアクセス許可について」を参照してく� さい。
GitHub Actionsワークフロー内でGitHub Packagesレジストリに認証を受けるには、以下の方法が使えます。
GITHUB_TOKEN
では、ワークフロー リポジトリに関連付けられているパッケージを発行します。packages:read
以上のスコープが設定された PAT では、(GITHUB_TOKEN
ではアクセスできない) 他のプライベート リポジトリに関連付けられているパッケージがインストールされます。
GitHub Actions ワークフローで使用される GITHUB_TOKEN
の詳細については、「ワークフローで認証する」を参照してく� さい。
personal access token で認証を行う
GitHub Packages内でパッケージを公開及びインストールするためには、適切なスコープで個人アクセストークンを使わなければなりません。 詳しくは、「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/OWNER/
を含むように gem ソースを更新することによって、GitHub Packages に対する認証を行う必要があります。 以下のように置き換えてく� さい。
USERNAME
を GitHub に。TOKEN
をpersonal access token に。OWNER
を、プロジェクトを含むリポジトリを所有しているユーザーまたは 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/OWNER/
Bundler で認証を行うには、personal access token を使うように Bundler を構成します。USERNAME は GitHub のユーザー名、TOKEN はpersonal access token、OWNER はプロジェクトを含むリポジトリを所有しているユーザーまたは組織アカウントの名前に置き換えます。REGISTRY-URL
は、インスタンスの RubyGems レジストリの URL に置き換えます。 インスタンスで Subdomain Isolation が有効になっている� �合は、rubygems.HOSTNAME
を使用します。 インスタンスで Subdomain Isolation が無効になっている� �合は、HOSTNAME/_registry/rubygems
を使用します。 いずれの� �合でも、HOSTNAME を GitHub Enterprise Server インスタンスのホスト名に置き換えてく� さい。
$ bundle config https://REGISTRY-URL/OWNER USERNAME:TOKEN
パッケージの公開
デフォルトでは、GitHubはパッケージはそのままの名前で既存のリポジトリに公開されます。 たとえば、<GEM NAME>
を octo-org
という Organization に公開するときは、GitHub Packages によって gem が octo-org/<GEM NAME>
リポジトリに公開されます。 gem の作成の詳細については、RubyGems ドキュメントの「gem の作成」を参照してく� さい。
パッケージを公開した後は、GitHub上でそのパッケージを見ることができます。 詳しくは、「パッケージの表示」をご覧く� さい。
-
GitHub Packagesに認証を受けてく� さい。 詳細については、「GitHub Packages への認証」を参照してく� さい。
-
gemspec からパッケージをビルドして、gem パッケージを作成します。
gem build <GEM NAME>.gemspec
-
パッケージを GitHub Packages に公開します。
OWNER
を、プロジェクトを含むリポジトリを所有しているユーザーまたは Organization アカウントの名前に、<GEM NAME>
を gem パッケージの名前に置き換えてく� さい。REGISTRY-URL
を、インスタンスの Rubygems レジストリの URL に置き換えます。 インスタンスで Subdomain Isolation が有効になっている� �合は、rubygems.HOSTNAME
を使用します。 インスタンスで Subdomain Isolation が無効になっている� �合は、HOSTNAME/_registry/rubygems
を使用します。 いずれの� �合でも、HOSTNAME を GitHub Enterprise Server インスタンスのホスト名に置き換えてく� さい。$ gem push --key github \ --host https://REGISTRY-URL/OWNER \ <GEM NAME>-0.0.1.gem
同じリポジトリへの複数パッケージの公開
複数の gem を同じリポジトリに公開するには、GitHub リポジトリの URL を gem.metadata
の github_repo
フィールドに含めることができます。 このフィールドを含めた� �合、GitHub でのリポジトリの照合は、gem 名を使うのではなく、この値に基づいて行われます。HOSTNAME を、your GitHub Enterprise Server instance のホスト名に置き換えます。
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 からインストールするパッケージに、OWNER を、インストールする 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/OWNER" do gem "GEM NAME" end
-
1.7.0 より前の Bundler バージョンの� �合は、新しいグローバルな
source
を追� する必要があります。 Bundler の使用方法の詳細については、bundler.io のドキュメントを参照してく� さい。source "https://REGISTRY-URL/OWNER" source "https://rubygems.org" gem "rails" gem "GEM NAME"
-
パッケージをインストールしてく� さい。
$ gem install <GEM NAME> --version "0.1.1"