前提条件
-
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 への認証を行う
パッケージを発行、インストール、および削除するには、アクセス トークンが必要です。
個人アクセス トークン (PAT) を使用し、GitHub Packages または GitHub API の認証を受けることができます。 個人トークンを作成する際には、必要に応じて様々なスコープをトークンに割り当てできます。 PAT のパッケージ関連のスコープの詳細については、「GitHub パッケージのアクセス許可について」を参照してください。
GitHub Actionsワークフロー内でGitHub Packagesレジストリに認証を受けるには、以下の方法が使えます。
GITHUB_TOKENでは、ワークフロー リポジトリに関連付けられているパッケージを発行します。packages:read以上のスコープが設定された PAT では、(GITHUB_TOKENではアクセスできない) 他のプライベート リポジトリに関連付けられているパッケージがインストールされます。
GitHub Actions ワークフローで使用される GITHUB_TOKEN の詳細については、「ワークフローで認証する」を参照してください。
個人アクセストークンでの認証
GitHub Packages内でパッケージを公開及びインストールするためには、適切なスコープで個人アクセストークンを使わなければなりません。 詳しくは、「GitHub Packages について」をご覧ください。
RubyGems を使用して GitHub Packages に対する認証を行うには、gem を公開するための ~/.gem/credentials ファイルを編集するか、単一の gem をインストールするための ~/.gemrc ファイルを編集するか、1 つ以上の gem を追跡してインストールする Bundler を使用します。
新しい gem を公開するには、 ~/.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 アカウントの名前に置き換えます。
$ bundle config https://rubygems.pkg.github.com/OWNER USERNAME:TOKEN
パッケージの公開
デフォルトでは、GitHubはパッケージはそのままの名前で既存のリポジトリに公開されます。 たとえば、octo-gem を octo-org という Organization に公開するときは、GitHub Packages によって gem が octo-org/octo-gem リポジトリに公開されます。 gem の作成の詳細については、RubyGems ドキュメントの「gem の作成」を参照してください。
パッケージを公開した後は、GitHub上でそのパッケージを見ることができます。 詳しくは、「パッケージの表示」をご覧ください。
-
GitHub Packagesに認証を受けてください。 詳細については、「GitHub Packages への認証」を参照してください。
-
gemspec からパッケージをビルドして、gem パッケージを作成します。
gem build OCTO-GEM.gemspec -
パッケージを 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 リポジトリの URL を gem.metadata の github_repo フィールドに含めることができます。 このフィールドを含めた場合、GitHub でのリポジトリの照合は、gem 名を使用するのではなく、この値に基づいて行われます。
gem.metadata = { "github_repo" => "ssh://github.com/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 に置き換えます。source "https://rubygems.org" gem "rails" source "https://rubygems.pkg.github.com/OWNER" do gem "GEM NAME" end -
1.7.0 より前の Bundler バージョンの場合は、新しいグローバルな
sourceを追加する必要があります。 Bundler の使用方法の詳細については、bundler.io のドキュメントを参照してください。source "https://rubygems.pkg.github.com/OWNER" source "https://rubygems.org" gem "rails" gem "GEM NAME" -
パッケージをインストールしてください。
$ gem install octo-gem --version "0.1.1"