このページでは、Ruby gem と gem バージョンの追加、表示、削除について説明します。
始める前に
Google Cloud CLI を インストールして 初期化します。
Ruby リポジトリに対するコマンドを実行するには、Google Cloud CLI バージョン 354.0.0 以降が必要です。バージョンは、次のコマンドで確認できます。
gcloud versionターゲット リポジトリが存在しない場合は、 Ruby パッケージ リポジトリを作成します。
Ruby がインストールされていることを確認します。インストール手順については、 Google Cloud Ruby の設定のチュートリアルをご覧ください。
(省略可)gcloud コマンドのデフォルトを設定します。
必要なロール
gem の管理に必要な権限を取得するには、リポジトリに対する次の IAM ロールの付与を管理者に依頼してください。
-
gem または gem 内のファイルを表示する:
Artifact Registry 読み取り (
roles/artifactregistry.reader) -
gem をダウンロードまたはインストールする:
Artifact Registry 読み取り (
roles/artifactregistry.reader) -
リポジトリに gem を追加する:
Artifact Registry 書き込み (
roles/artifactregistry.writer) -
gem を削除する:
Artifact Registry リポジトリ管理者 (
roles/artifactregistry.repoAdmin)
ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
必要な権限は、カスタム ロールや他の事前定義 ロールから取得することもできます。
gem を追加する
Ruby のパッケージは gem と呼ばれます。各 gem には、名前、バージョン プラットフォームが含まれています。Ruby プロジェクトには、必要な gem 依存関係を指定する構成ファイルである gemfile も含まれている必要があります。
リポジトリ モード: 標準
Ruby プロジェクトをビルドすると、ディストリビューション ファイルはプロジェクトの lib サブディレクトリに保存されます。その後、RubyGems を使用して gem を標準リポジトリにアップロードできます。
Artifact Registry リポジトリに gem を追加するには:
gem push GEM_NAME --host https://LOCATION-ruby.pkg.dev/PROJECT/REPOSITORY
ここで
- GEM_NAME は、リポジトリに push する gem の名前です。
- LOCATION は、リポジトリのロケーションです。
- PROJECT は、プロジェクト ID です。このフラグを省略すると、 現在のプロジェクトまたは デフォルトのプロジェクトが使用されます。
- REPOSITORY は、 Artifact Registry 内のリポジトリの名前です。
gem とバージョンを表示する
リポジトリ モード: 標準
Google Cloud コンソールまたは gcloud を使用してパッケージとパッケージのバージョンを表示するには:
コンソール
Google Cloud コンソールで [リポジトリ] ページを開きます。
リポジトリ リストで、適切なリポジトリをクリックします。
[パッケージ] ページに、リポジトリ内のパッケージが一覧表示されます。
パッケージをクリックして、そのパッケージのバージョンを表示します。
gcloud
リポジトリ内のパッケージを一覧表示するには、次のコマンドを実行します。
gcloud artifacts packages list [--repository=REPOSITORY] [--location=LOCATION]
以下を置き換えます。
REPOSITORYはリポジトリの名前です。デフォルト リポジトリを構成した場合は、このフラグを省略してデフォルトを使用できます。-
LOCATIONは、リポジトリのリージョンまたはマルチリージョンのロケーションです。 デフォルト ロケーションを構成している場合は、このフラグを省略してデフォルトを使用できます。
パッケージのバージョンを表示するには、次のコマンドを実行します。
gcloud artifacts versions list --package=PACKAGE \
[--repository=REPOSITORY] [--location=LOCATION]
以下を置き換えます。
リモート リポジトリの場合、返されるリストには、すべての直接的な依存関係と一時的な依存関係が含まれます。
ファイルの一覧表示
リポジトリ モード: 標準
リポジトリ内のファイル、指定したパッケージのすべてのバージョン内のファイル、またはパッケージの特定のバージョン内のファイルを一覧表示できます。
次のすべてのコマンドについては、コマンドに --limit フラグを追加することで、返されるファイルの最大数を設定できます。
デフォルト値が構成されている場合にデフォルトのプロジェクト、リポジトリ、ロケーションのすべてのファイルを一覧表示するには次のようにします。
gcloud artifacts files list
指定したプロジェクト、リポジトリ、ロケーション内のファイルを一覧表示するには、次のコマンドを実行します。
gcloud artifacts files list \
--project=PROJECT \
--repository=REPOSITORY \
--location=LOCATION
特定のパッケージのすべてのバージョン内のファイルを一覧表示するには:
gcloud artifacts files list \
--project=PROJECT \
--repository=REPOSITORY \
--location=LOCATION \
--package=PACKAGE
特定のパッケージ バージョンのファイルを一覧表示するには:
gcloud artifacts files list \
--project=PROJECT \
--repository=REPOSITORY \
--location=LOCATION \
--package=PACKAGE \
--version=VERSION
次の値を置き換えます。
LOCATION: リポジトリのリージョンまたはマルチリージョン ロケーション。PROJECT: Google Cloud プロジェクト ID。プロジェクト ID にコロン(:)が含まれている場合は、ドメインをスコープとするプロジェクトをご覧ください。REPOSITORY: イメージが保存されるリポジトリの名前。PACKAGE: パッケージの名前。VERSION: パッケージのバージョン。
例
次のパッケージ情報について考慮するには:
- プロジェクト:
my-project - リポジトリ:
my-repo - リポジトリの場所:
us-west1 - パッケージ:
my-app
次のコマンドは、デフォルト プロジェクト内のロケーション us-west1 のリポジトリ my-repo 内のすべてのファイルを一覧表示します。
gcloud artifacts files list \
--location=us-west1 \
--repository=my-repo
1.0 内のファイルを一覧表示します。
gcloud artifacts files list \
--project=my-project \
--location=us-west1 \
--repository=my-repo \
--package=my-app \
--version=1.0
gem をインストールする
リポジトリ モード: 標準
パッケージの最新の安定版リリースをインストールするには:
gem install GEM_NAME
標準リポジトリの場合は、リポジトリからパッケージを直接ダウンロードします。
リモート リポジトリの場合は、パッケージとその依存関係のキャッシュに保存されたコピーをダウンロードします。キャッシュに保存されたコピーが存在しない場合は、リモート リポジトリがアップストリーム ソースからパッケージをダウンロードし、それを提供する前にキャッシュに保存します。リモート リポジトリがアップストリーム ソースからパッケージを取得したことを確認するには、リポジトリ内のパッケージの一覧を表示します。
仮想リポジトリの場合は、Artifact Registry はリクエストされたパッケージのアップストリーム リポジトリを検索します。
- キャッシュに保存されたコピーが存在しない場合、アップストリームのリモート リポジトリは、リクエストされたパッケージをダウンロードしてキャッシュに保存します。仮想リポジトリはリクエストされたパッケージを提供だけして、保存しません。
- 複数のアップストリーム リポジトリに存在する利用可能なバージョンをリクエストすると、Artifact Registry は仮想リポジトリ用に構成された優先度設定に基づいて、使用するアップストリーム リポジトリを選択します。
たとえば、アップストリーム リポジトリに次の優先度設定がある仮想リポジトリについて考えます。
main-repo: 優先度が100に設定secondary-repo1: 優先度が80に設定secondary-repo2: 優先度が80に設定test-repo: 優先度が20に設定
main-repo の優先度の値は最も高いため、仮想リポジトリは常に最初に検索します。
secondary-repo1 と secondary-repo2 はどちらも優先度が 80 に設定されています。リクエストされたパッケージが main-repo にない場合、Artifact Registry は次にこれらのリポジトリを検索します。どちらも同じ優先度を持つため、両方にそのバージョンがある場合、Artifact Registry はどちらか一方のリポジトリからパッケージを提供するように選択できます。
test-repo の優先度は最も低くなります。他のアップストリーム リポジトリにアーティファクトがない場合、保存されたアーティファクトが提供されます。
その他の情報
gem を Artifact Registry リポジトリに push するか、Artifact Registry リポジトリから gem
を pull する際に、リクエストされた gem またはその依存関係が指定されたリポジトリで見つからない場合、gem クライアントは gem の
gemfile で定義されている他のソースを使用します。
Artifact Registry
からのみ直接取得してインストールする場合は、次のコマンドを実行して、Artifact Registry 以外のソースを gemfile
から削除します。
gem sources --remove SOURCE
rubygems.org をソースとして追加するには:
gem sources --add SOURCE
ここで、SOURCE はソースのアドレス(
https://rubygems.org など)です。
パッケージとバージョンを削除する
リポジトリ モード: 標準
パッケージとそのすべてのバージョンを削除することや、特定のバージョンを削除することができます。
- パッケージを削除すると、その操作は元に戻せません。
- リモート リポジトリの場合は、パッケージのキャッシュに保存されたコピーのみが削除されます。アップストリーム ソース はこの影響を受けません。キャッシュに保存されたパッケージを削除し、次回、リポジトリが同じパッケージ バージョンのリクエストを受け取った場合、Artifact Registry は、そのパッケージを再度ダウンロードしてキャッシュに保存します。
パッケージまたはパッケージのバージョンを削除する前に、そのパッケージの重要な依存関係を送信済み、または対処済みであることを確認してください。
パッケージを削除するには:
コンソール
Google Cloud コンソールで [リポジトリ] ページを開きます。
リポジトリ リストで、適切なリポジトリをクリックします。
[パッケージ] ページに、リポジトリ内のパッケージが一覧表示されます。
削除するパッケージを選択します。
[削除] をクリックします。
確認のダイアログ ボックスで、[削除] をクリックします。
gcloud
次のコマンドを実行します。
gcloud artifacts packages delete PACKAGE \
[--repository=REPOSITORY] [--location=LOCATION] [--async]
以下を置き換えます。
PACKAGEは、リポジトリ内のイメージの名前です。REPOSITORYはリポジトリの名前です。デフォルト リポジトリを構成した場合は、このフラグを省略してデフォルトを使用できます。-
LOCATIONは、リポジトリのリージョンまたはマルチリージョンのロケーションです。 このフラグを使用して、特定のロケーションのリポジトリを表示します。デフォルト ロケーションを構成している場合は、このフラグを省略してデフォルトを使用できます。
--async フラグを使用すると、処理中のオペレーションの完了を待たずに、コマンドがすぐに返されます。
パッケージのバージョンを削除するには:
コンソール
Google Cloud コンソールで [リポジトリ] ページを開きます。
リポジトリ リストで、適切なリポジトリをクリックします。
[パッケージ] ページに、リポジトリ内のパッケージが一覧表示されます。
パッケージをクリックして、そのパッケージのバージョンを表示します。
削除するバージョンを指定します。
[削除] をクリックします。
確認のダイアログ ボックスで、[削除] をクリックします。
gcloud
次のコマンドを実行します。
gcloud artifacts versions delete VERSION \
--package=PACKAGE \
[--repository=REPOSITORY] [--location=LOCATION] \
[--async]
以下を置き換えます。
VERSIONは、削除するバージョンの名前です。PACKAGEは、リポジトリ内のイメージの名前です。REPOSITORYはリポジトリの名前です。デフォルト リポジトリを構成した場合は、このフラグを省略してデフォルトを使用できます。-
LOCATIONは、リポジトリのリージョンまたはマルチリージョンのロケーションです。 このフラグを使用して、特定のロケーションのリポジトリを表示します。デフォルト ロケーションを構成している場合は、このフラグを省略してデフォルトを使用できます。
--async フラグを使用すると、処理中のオペレーションの完了を待たずに、コマンドがすぐに返されます。
制限事項
Artifact Registry では、
gem sources -addコマンドを使用してリポジトリをソースとして追加することはできません。ただし、ソースを手動で ファイルに.gemrc追加するか、コマンドでgemフラグを直接渡すことができます。--sourceArtifact Registry では、
gem fetchを使用して gem を pull することはできません。