ノート: GitHub Packagesは現在GitHub Enterprise Server 2.22でベータです。 GitHub Enterprise Serverのインスタンスのベータに参加するには、サインアップフォームを使ってください。
デフォルトでは、GitHubはパッケージはそのままの名前で既存のリポジトリに公開されます。 たとえば、GitHubはOWNER/test
というリポジトリ内のcom.example:test
という名前のパッケージを公開します。
必要な環境
-
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で認証を受けるのに、個人のアクセストークン(PAT)が利用できます。 個人トークンを作成する際には、必要に応じて様々なスコープをトークンに割り当てできます。 PATに関するパッケージ関連のスコープについての詳しい情報は、「GitHub Packagesの権限について」を参照してください。
GitHub Actionsワークフロー内でGitHub Packagesレジストリに認証を受けるには、以下の方法が使えます。
GITHUB_TOKEN
を使って、ワークフローリポジトリに関連づけられたパッケージを公開。- PATで他のプライベートリポジトリ(これには
GITHUB_TOKEN
がアクセスできない)に関連づけられたパッケージをインストール。
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は個人アクセストークンで置き換えてください。
gem.metadata = { "github_repo" => "ssh://github.com/OWNER/REPOSITORY" }
gemをインストールするには、プロジェクトの~/.gemrcファイルを編集し、https://USERNAME:TOKEN@REGISTRY-URL/OWNER/
を含めることによってGitHub Packagesの認証を受けなければなりません。 以下のように置き換えてください。
USERNAME
をGitHubのユーザ名で。TOKEN
を個人アクセストークンで。OWNER
を、プロジェクトを含むリポジトリを所有しているユーザまたはOrganizationアカウント名で。REGISTRY-URL
をインスタンスの Rubygems レジストリの URL で。 インスタンスで Subdomain Isolation が有効になっている場合は、rubygems.HOSTNAME
を使用します。 インスタンスで Subdomain Isolation が無効になっている場合は、HOSTNAME/_registry/rubygems
を使用します。 いずれの場合でも、 HOSTNAME を GitHub Enterprise Server インスタンスのホスト名に置き換えてください。
~/.gemrcファイルがないなら、以下の例を使って新しい~/.gemrcファイルを作成してください。
---
:backtrace: false
:bulk_threshold: 1000
:sources:
- https://rubygems.org/
- https://USERNAME:TOKEN@REGISTRY-URL/OWNER/
:update_sources: true
:verbose: true
Bundlerで認証を受けるには、個人アクセストークンを使うようにBundlerを設定してください。 USERNAMEをGitHubのユーザ名で、TOKENを個人アクセストークンで、OWNERをプロジェクトを含むリポジトリを所有しているユーザもしくはOrganizationアカウント名で置き換えます。}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はパッケージはそのままの名前で既存のリポジトリに公開されます。 たとえば、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パッケージ名で置き換えます。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 \ OCTO-GEM-0.0.1.gem
同じリポジトリへの複数パッケージの公開
複数のgemを同じリポジトリに公開したい場合は、GitHubリポジトリのgem.metadata
にあるgithub_repo
フィールドに、URL を記述できます。 このフィールドを含めた場合、GitHub は、gem 名の代わりに、この値を元にしてリポジトリを照合します。HOSTNAMEを、GitHub Enterprise Serverのインスタンス のホスト名に置き換えます。
gem.metadata = { "github_repo" => "ssh://HOSTNAME/OWNER/REPOSITORY" }
パッケージをインストールする
GitHub Packagesからのgemsは、rubygems.orgからのgemsを使うのと同じように利用できます。 GitHubユーザあるいはOrganizationを~/.gemrcファイルにソースとして追加するか、Bundlerを使ってGemfileを編集することによって、GitHub Packagesに認証を受けなければなりません。
-
GitHub Packagesに認証を受けてください。 詳しい情報については「GitHub Packagesへの認証を行う」を参照してください。
-
Bundlerについては、GitHubユーザもしくはOrganizationをソースとしてGemfileに追加して、この新しいソースからgemsをフェッチするようにしてください。 たとえば、指定したパッケージに対してのみGitHub Packagesを使用するGemfileに新しい
source
ブロックを追加できます。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 octo-gem --version "0.1.1"
参考リンク
- 「パッケージの削除」