デフォルトでは、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でユーザ名で認証を受けるのに、個人のアクセストークンが利用できます。 個人トークンを作成する際には、必要に応じて様々なスコープをトークンに割り当てできます。
To authenticate using a GitHub Actionsのワークフロー:
- For package registries (
PACKAGE-REGISTRY.pkg.github.com
), you can use aGITHUB_TOKEN
. - For the container registry (
ghcr.io/OWNER/IMAGE-NAME
), you must use a personal access 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@rubygems.pkg.github.com/OWNER/
を含めることによってGitHub Packagesの認証を受けなければなりません。 以下のように置き換えてください。
USERNAME
をGitHubのユーザ名で。TOKEN
を個人アクセストークンで。OWNER
with the name of the user or organization account that owns the repository containing your project.
~/.gemrcファイルがないなら、以下の例を使って新しい~/.gemrcファイルを作成してください。
---
:backtrace: false
:bulk_threshold: 1000
:sources:
- https://rubygems.org/
- https://USERNAME:TOKEN@rubygems.pkg.github.com/OWNER/
:update_sources: true
:verbose: true
To authenticate with Bundler, configure Bundler to use your personal access token, replacing USERNAME with your GitHub username, TOKEN with your personal access token, and OWNER with the name of the user or organization account that owns the repository containing your project.
$ bundle config https://rubygems.pkg.github.com/OWNER USERNAME:TOKEN
GITHUB_TOKEN
での認証
GitHub Actionsワークフローを使っているなら、GITHUB_TOKEN
を使い、個人アクセストークンを保存したり管理したりする必要なくGitHub Packages内のパッケージの公開や利用ができます。 詳しい情報については「GITHUB_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
-
Publish a package to GitHub Packages, replacing
OWNER
with the name of the user or organization account that owns the repository containing your project andOCTO-GEM
with the name of your gem package.$ gem push --key github \ --host https://rubygems.pkg.github.com/OWNER \ OCTO-GEM-0.0.1.gem
同じリポジトリへの複数パッケージの公開
複数のgemを同じリポジトリに公開したい場合は、GitHubリポジトリのgem.metadata
にあるgithub_repo
フィールドに、URL を記述できます。 If you include this field, GitHub matches the repository based on this value, instead of using the gem name.
gem.metadata = { "github_repo" => "ssh://github.com/OWNER/REPOSITORY" }
パッケージをインストールする
GitHub Packagesからのgemsは、rubygems.orgからのgemsを使うのと同じように利用できます。 GitHubユーザあるいはOrganizationをソースとして~/.gemrcファイルに追加するか、Bundlerを使い、Gemfileを編集することで、GitHub Packagesの認証を受けなければなりません。
-
GitHub Packagesに認証を受けてください。 詳しい情報については「GitHub Packagesへの認証を行う」を参照してください。
-
Bundlerについては、GitHubユーザもしくはOrganizationをソースとしてGemfileに追加して、この新しいソースからgemsをフェッチするようにしてください。 For example, you can add a new
source
block to your Gemfile that uses GitHub Packages only for the packages you specify, replacing GEM NAME with the package you want to install from GitHub Packages and OWNER with the user or organization that owns the repository containing the gem you want to install.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"