Artifact Registry に Ruby gem を保存する
このクイックスタートでは、プライベート Artifact Registry Ruby リポジトリを設定し、パッケージ(gem とも呼ばれます)をそのリポジトリにアップロードする方法を示します。
始める前に
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles. -
Make sure that you have the following role or roles on the project: Artifact Registry Administrator
Check for the roles
-
In the Google Cloud console, go to the IAM page.
Go to IAM - Select the project.
-
In the Principal column, find all rows that identify you or a group that you're included in. To learn which groups you're included in, contact your administrator.
- For all rows that specify or include you, check the Role column to see whether the list of roles includes the required roles.
Grant the roles
-
In the Google Cloud console, go to the IAM page.
[IAM] に移動 - プロジェクトを選択します。
- [ アクセスを許可] をクリックします。
-
[新しいプリンシパル] フィールドに、ユーザー ID を入力します。 これは通常、Google アカウントのメールアドレスです。
- [ロールを選択] リストでロールを選択します。
- 追加のロールを付与するには、 [別のロールを追加] をクリックして各ロールを追加します。
- [保存] をクリックします。
-
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles. -
Make sure that you have the following role or roles on the project: Artifact Registry Administrator
Check for the roles
-
In the Google Cloud console, go to the IAM page.
Go to IAM - Select the project.
-
In the Principal column, find all rows that identify you or a group that you're included in. To learn which groups you're included in, contact your administrator.
- For all rows that specify or include you, check the Role column to see whether the list of roles includes the required roles.
Grant the roles
-
In the Google Cloud console, go to the IAM page.
[IAM] に移動 - プロジェクトを選択します。
- [ アクセスを許可] をクリックします。
-
[新しいプリンシパル] フィールドに、ユーザー ID を入力します。 これは通常、Google アカウントのメールアドレスです。
- [ロールを選択] リストでロールを選択します。
- 追加のロールを付与するには、 [別のロールを追加] をクリックして各ロールを追加します。
- [保存] をクリックします。
-
Google Cloud コンソールに移動します。
Google Cloud コンソールのツールバーで、[Cloud Shell をアクティブにする] をクリックします。
- RubyGems CLI: push リクエストと pull リクエストをサポートします。この CLI はデフォルトで Ruby で使用できます。RubyGems で認証する場合は、リポジトリに push リクエストまたは pull リクエストを行うたびに認証する必要があります。
Bundler CLI: pull リクエストをサポートします。Bundler は、パッケージとアップストリームを gemfile に保存します。これにより、ユーザーは個々のプルリクエストを認証することなく、複数のマシンで設定を標準化できます。ただし、Bundler に対して認証情報を再認証する必要がある場合があります。
Bundler CLI をインストールするには、
gem install bundlerと入力します。- GEM_NAME は、リクエストが行われた Gem の名前です。
- LOCATION は、リポジトリのリージョンまたはマルチリージョンのロケーションです。
- PROJECT は、リポジトリを含むプロジェクトの ID です。
- REPOSITORY はリポジトリの ID です。
- GEM_NAME は、リクエストが行われた Gem の名前です。
- LOCATION は、リポジトリのリージョンまたはマルチリージョンのロケーションです。
- PROJECT は、リポジトリを含むプロジェクトの ID です。
- REPOSITORY はリポジトリの ID です。
次のコマンドを実行して、OAuth2 アクセス トークンを生成します。
gcloud auth print-access-tokenこのトークンは、Artifact Registry の API キーとして機能します。
認証情報ファイルを更新します。
~/.gem/credentialsを開き、リポジトリの行を追加します。キーはリポジトリの URL で、値はBearerの後にトークンが続きます。:rubygems_api_key: RUBYGEMS_ORG_KEY https://LOCATION-ruby.pkg.dev/PROJECT/REPOSITORY: Bearer OAUTH_TOKENここで
- RUBYGEMS_ORG_KEY は
RubyGems.orgの API キーです。 - LOCATION は、リポジトリのリージョンまたはマルチリージョンのロケーションです。
- PROJECT は、リポジトリを含むプロジェクトの ID です。
- REPOSITORY はリポジトリの ID です。
- OAUTH_TOKEN は OAuth2 アクセス トークンです。
- RUBYGEMS_ORG_KEY は
ジェムをプッシュします。認証情報ファイルでキーをすでに定義しているため、
GEM_HOST_API_KEYを設定する必要はありません。gem push GEM_NAME --host https://LOCATION-ruby.pkg.dev/PROJECT/REPOSITORY
gemfile にリポジトリのアドレスを
sourceとして追加します。# Gemfile # <...> source "https://LOCATION-ruby.pkg.dev/PROJECT/REPOSITORY"bundle configを使用してリポジトリに対して認証します。export GEM_TOKEN="oauth2accesstoken:$(gcloud auth print-access-token)" export HOST="https://LOCATION-ruby.pkg.dev/PROJECT/REPOSITORY" bundle config $HOST $GEM_TOKEN- LOCATION は、リポジトリのリージョンまたはマルチリージョンのロケーションです。
- PROJECT は、プロジェクト ID です。このフラグを省略すると、現在のプロジェクトまたはデフォルトのプロジェクトが使用されます。
- REPOSITORY はリポジトリの ID です。デフォルトの Artifact Registry リポジトリを構成した場合、このフラグがコマンドから省略されると使用されます。
次のコマンドを実行して、現在のプロジェクトでロケーション
us-west1にquickstart-ruby-repoという新しい Ruby gem リポジトリを作成します。gcloud artifacts repositories create quickstart-ruby-repo \ --repository-format=ruby \ --location=us-west1 \ --description="Ruby gem repository"次のコマンドを実行して、リポジトリが作成されたことを確認します。
gcloud artifacts repositories listgcloudコマンドを簡素化するには、デフォルトのリポジトリをquickstart-ruby-repoに、デフォルトのロケーションをus-west1に設定します。デフォルト値を設定すると、gcloudコマンドでリポジトリまたはロケーションが必要な場合でも指定の必要はありません。リポジトリを設定するには、次のコマンドを実行します。
gcloud config set artifacts/repository quickstart-ruby-repoロケーションを設定するには、次のコマンドを実行します。
gcloud config set artifacts/location us-west1これらのコマンドの詳細については、gcloud config set のドキュメントをご覧ください。
- GEM_NAME は、リポジトリに push する gem の名前です。
- PROJECT は、プロジェクト ID です。このフラグを省略すると、現在のプロジェクトまたはデフォルトのプロジェクトが使用されます。
- GEM_NAME は、リポジトリにインストールする Gem の名前です。
- PROJECT は、プロジェクト ID です。このフラグを省略すると、現在のプロジェクトまたはデフォルトのプロジェクトが使用されます。
quickstart-ruby-repoリポジトリを削除するには、次のコマンドを実行します。gcloud artifacts repositories delete quickstart-ruby-repoアクティブな
gcloud構成のデフォルトのリポジトリとロケーション設定を削除するには、次のコマンドを実行します。gcloud config unset artifacts/repository gcloud config unset artifacts/location- 認証の構成の詳細を確認する
- リポジトリの管理について確認する
- パッケージの管理について確認する
- DevOps に関するリソースを読む。また、研究プログラムについて確認する。
Cloud Shell を起動する
このクイックスタートでは、Google Cloudでホストされているリソースを管理するためのシェル環境である Cloud Shell を使用します。
Cloud Shell には、Google Cloud CLI と Ruby がプリインストールされています。gcloud CLI は、 Google Cloudの主要なコマンドライン インターフェースを提供します。
Cloud Shell を起動します。
コンソールの下部にあるフレーム内で Cloud Shell セッションが開きます。このシェルで gcloud コマンドを実行します。
認証を構成する
Ruby は、Artifact Registry リポジトリへのリクエストを認証する 2 つの方法をサポートしています。
RubyGems CLI で認証する
RubyGems CLI は、OAuth2 トークンを使用してリクエストを認証します。OAuth2 トークンを Artifact Registry リポジトリへの呼び出しに渡すには、まずトークンを生成し、リクエストを行うときにリポジトリのアドレスとともに渡す必要があります。トークンの有効期間は 1 時間で、1 時間ごとに更新する必要があります。
pull リクエストを認証する
Google Cloud CLI コマンドラインで pull リクエストを認証するか、.gemrc ファイルを更新します。
コマンドラインで pull リクエストを認証する
プルリクエスト内の最新バージョンの gem に対して認証を行うには、次のコマンドを実行します。
export GEM_TOKEN="oauth2accesstoken:$(gcloud auth print-access-token)"
gem install GEM_NAME --source https://$GEM_TOKEN@LOCATION-ruby.pkg.dev/PROJECT/REPOSITORY
特定の Gem バージョンで認証するには、gem install コマンドに -v GEM_VERSION を追加します。
ここで
.gemrc ファイルで認証する
次のコードを追加して、プルリクエストでソースに対する認証を行うように、グローバルまたはプロジェクト固有の /.gemrc ファイルを構成できます。
# File: ~/.gemrc
# Use the GEM_TOKEN retrieved from export GEM_TOKEN="oauth2accesstoken:$(gcloud auth print-access-token)"
<...>
:sources:
- https://GEM_TOKEN@LOCATION-ruby.pkg.dev/PROJECT/REPO/
<...>
/.gemrc ファイルで定義されたソースを使用して gem をインストールするには、次のコマンドを実行します。
gem install GEM_NAME
プッシュ リクエストを認証する
プッシュ リクエストを認証するには、Google Cloud CLI コマンドラインを使用するか、認証情報ファイルを更新します。
コマンドラインで push リクエストを認証する
プッシュ リクエストを認証するには、次のコマンドを実行します。
export GEM_HOST_API_KEY="Bearer $(gcloud auth print-access-token)"
gem push GEM_NAME --host https://LOCATION-ruby.pkg.dev/PROJECT/REPOSITORY
ここで
認証情報ファイルでプッシュ リクエストを認証する
gem コマンドライン ツールは、~/.gem/credentials ファイルを使用して、gem の push と pull の API キーを保存します。プッシュ リクエストでソースに対して認証を行うように認証情報ファイルを構成する手順は次のとおりです。
Bundler で認証する
Ruby の Bundler は、1 つ以上の gem にわたってアプリケーションの依存関係を管理します。Bundler を設定する手順は次のとおりです。
ここで
リモート リポジトリへの再認証が必要になることがあります。この場合は、ステップ 2 と同じ認証コマンドを実行します。
Bundler の構成の詳細については、bundler.io のドキュメントの Gemfiles をご覧ください。
認証方法の詳細については、Ruby gem リポジトリ用に Artifact Registry への認証を構成するをご覧ください。
リポジトリを作成する
gem のリポジトリを作成します。
Gem をダウンロードする
Ruby プロジェクトをビルドすると、ディストリビューション ファイルは Ruby プロジェクトの lib サブディレクトリに保存されます。このクイックスタートを簡素化するため、ディレクトリを作成し、そのディレクトリに gem をダウンロードします。
ディレクトリを作成するには、次のコマンドを実行します。
mkdir ruby-quickstart
mkdir ruby-quickstart/lib
cd ruby-quickstart/lib
次に、gem をダウンロードします。独自の Gem を使用するか、rubygems.org の人気の Gem ページからサンプル Gem をダウンロードできます。rubygems.org から gem をダウンロードするには、次のコマンドを実行します。
gem fetch GEM_NAME
これで、ruby_quickstart/lib ディレクトリに GEM_NAME という名前の gem が作成されました。次のセクションでは、RubyGems CLI を使用して gem をリポジトリに push します。
gem をリポジトリに push する
gem をリポジトリに push するには、次のコマンドを実行します。
gem push GEM_NAME --host https://us-west1-ruby.pkg.dev/PROJECT/quickstart-ruby-repo
ここで
リポジトリ内の gem を表示する
gem が追加されたことを確認するには、ruby-quickstart リポジトリ内のパッケージを一覧表示します。
次のコマンドを実行します。
gcloud artifacts packages list --repository=ruby-quickstart
gem のバージョンを表示するには、次のコマンドを実行します。
gcloud artifacts versions list --package=GEM_NAME
gem をインストールする
Artifact Registry リポジトリに push した gem をインストールするには、次のコマンドを実行します。
export GEM_TOKEN="oauth2accesstoken:$(gcloud auth print-access-token)"
gem install GEM_NAME --source https://$GEM_TOKEN@us-west1-ruby.pkg.dev/PROJECT/quickstart-ruby-repo
ここで
トラブルシューティング
詳細については、RubyGems のトラブルシューティングをご覧ください。
クリーンアップ
このページで使用したリソースについて、 Google Cloud アカウントに課金されないようにするには、次の手順を実施します。
リポジトリを削除する前に、保持する必要がある Gem が別の場所で使用可能であることを確認してください。