Skip to main content

このバージョンの GitHub Enterprise はこの日付をもって終了となりました: 2023-01-18. 重大なセキュリティの問題に対してであっても、パッチリリースは作成されません。 パフォーマンスの向上、セキュリティの向上、新機能の向上を図るために、最新バージョンの GitHub Enterprise にアップグレードします。 アップグレードに関するヘルプについては、GitHub Enterprise サポートにお問い合わせく� さい

RubyGemsレジストリの利用

GitHub Packages にパッケージを公開し、GitHub Packages に保存されたパッケージを依存関係としてBundlerを使うRubyのプロジェクトで利用するよう、RubyGemsを設定できます。

GitHub Packages は、GitHub Free、GitHub Pro、Organization の GitHub Free、GitHub Team、GitHub Enterprise Cloud、GitHub Enterprise Server 3.0 以降、GitHub AE で利用できます。 GitHub Enterprise Server インスタンスのアップグレードについて詳しくは、「新しいリリースへのアップグレードについて」を参照してく� さい。また、現在のリリース バージョンからのアップグレード パスについては、アップグレード アシスタント を参照してく� さい。

注: サイト管理者はそれぞれのサポートされているパッケージの種類を有効化あるいは無効化できるので、このパッケージの種類はインスタンスで利用できないかもしれません。 詳細については、「エンタープライズ向けのパッケージ サポートの構成」を参照してく� さい。

前提条件

  • 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上でそのパッケージを見ることができます。 詳しくは、「パッケージの表示」をご覧く� さい。

  1. GitHub Packagesに認証を受けてく� さい。 詳細については、「GitHub Packages への認証」を参照してく� さい。

  2. gemspec からパッケージをビルドして、gem パッケージを作成します。

    gem build <GEM NAME>.gemspec
    
  3. パッケージを 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.metadatagithub_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 に対して認証を行う必要があります。

  1. GitHub Packagesに認証を受けてく� さい。 詳細については、「GitHub Packages への認証」を参照してく� さい。

  2. 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
    
  3. 1.7.0 より前の Bundler バージョンの� �合は、新しいグローバルな source を追� する必要があります。 Bundler の使用方法の詳細については、bundler.io のドキュメントを参照してく� さい。

    source "https://REGISTRY-URL/OWNER"
    source "https://rubygems.org"
    
    gem "rails"
    gem "GEM NAME"
    
  4. パッケージをインストールしてく� さい。

    $ gem install <GEM NAME> --version "0.1.1"
    

参考資料