Auf dieser Seite wird beschrieben, wie Sie die Authentifizierung mit einem Artifact Registry-Ruby-Gem-Repository konfigurieren.
Sie müssen sich bei Artifact Registry authentifizieren, wenn Sie eine Drittanbieteranwendung für die Verbindung mit einem Repository verwenden.
Sie müssen die Authentifizierung nicht für Cloud Build oder Google Cloud Laufzeitumgebungen wie Google Kubernetes Engine und Cloud Run konfigurieren.
Hinweis
- Wenn das Ziel-Repository nicht vorhanden ist, erstellen Sie ein Ruby-Gem-Repository.
- Prüfen Sie, ob Ruby installiert ist. Eine Installationsanleitung finden Sie im Google Cloud Tutorial zum Einrichten von Ruby.
- Prüfen Sie, ob das verwendete Nutzerkonto oder Dienstkonto die erforderlichen Berechtigungen für den Zugriff auf das Repository hat.
-
Installieren Sie die Google Cloud CLI und melden Sie sich dann mit Ihrer föderierten Identität in der gcloud CLI an. Initialisieren Sie die Google Cloud CLI nach der Anmeldung mit dem folgenden Befehl: initialize
gcloud init - (Optional) Konfigurieren Sie die Standardeinstellungen für gcloud CLI-Befehle.
Übersicht
Ruby unterstützt zwei Methoden zum Authentifizieren von Anfragen an Ihr Artifact Registry-Repository:
- RubyGems CLI: Unterstützt Push- und Pull-Anfragen. Diese CLI ist standardmäßig in Ruby verfügbar. Wenn Sie sich mit RubyGems authentifizieren, müssen Sie sich bei jeder Push- oder Pull-Anfrage an Ihr Repository authentifizieren.
Bundler CLI: Unterstützt Pull-Anfragen. Bundler speichert Pakete und Upstreams in einer Gemfile. So können Nutzer Setups auf mehreren Computern standardisieren, ohne jede einzelne Pull-Anfrage authentifizieren zu müssen. Sie müssen Ihre Anmeldedaten jedoch gelegentlich neu bei Bundler authentifizieren.
Geben Sie
gem install bundlerein, um die Bundler CLI zu installieren.
Tokens für die Authentifizierung generieren
Um Ihr Paket in Artifact Registry zu authentifizieren, müssen Sie zuerst ein Authentifizierungstoken generieren. Sie können dieses Token dann verwenden, wenn Sie Anfragen von Ihrem Paket an Artifact Registry senden.
Sie können ein oauth2 Zugriffstoken mit Google Cloud oder ein
oauth2l Token außerhalb von Google Cloudgenerieren.
Zugriffstokens sind 60 Minuten lang gültig. Generieren Sie ein Zugriffstoken kurz vor dem Ausführen von Befehlen, die mit Repositories interagieren. Wenn Ihr Zugriffstoken abgelaufen ist, müssen Sie ein neues Zugriffstoken generieren.
Token mit gcloud generieren
Führen Sie den folgenden
Befehl aus, um ein oauth2-Zugriffstoken mit Google Cloudzu generieren:
export ACCESS_TOKEN="oauth2accesstoken:$(gcloud auth print-access-token)"
Sie können jetzt auf ACCESS_TOKEN verweisen, wenn Sie Anfragen von Ihrem Ruby-Paket an Artifact Registry senden.
Token ohne gcloud generieren
So generieren Sie ein Zugriffstoken nur mit der oauth2l-CLI:
Installieren Sie die neueste Version von
oauth2l, indem Sie den folgenden Befehl ausführen:go install github.com/google/oauth2l@latestFühren Sie dazu diesen Befehl aus:
export ACCESS_TOKEN="oauth2l fetch --scope cloud-platform"Google Cloud generiert ein SHA256-Hash-Token und speichert es in der Variablen
ACCESS_TOKEN. Sie können jetzt aufACCESS_TOKENverweisen, wenn Sie Anfragen von Ihrem Ruby-Paket an Artifact Registry senden.
Mit der RubyGems CLI authentifizieren
Die RubyGems CLI verwendet OAuth2-Tokens, um eine Anfrage zu authentifizieren. Wenn Sie OAuth2-Tokens an Aufrufe Ihrer Artifact Registry-Repositories übergeben möchten, müssen Sie Ihr OAuth2-Token mit der Adresse Ihres Repositorys übergeben, wenn Sie eine Anfrage senden. Tokens sind eine Stunde lang gültig und müssen stündlich aktualisiert werden.
Pull-Anfragen authentifizieren
Sie können eine Pull-Anfrage in der Google Cloud CLI-Befehlszeile authentifizieren oder Ihre .gemrc-Datei aktualisieren.
Pull-Anfragen in der Befehlszeile authentifizieren
Führen Sie den folgenden Befehl aus, um sich für die neueste Version des Gems in Ihrer Pull-Anfrage zu authentifizieren:
gem install GEM_NAME --source https://$ACCESS_TOKEN@LOCATION-ruby.pkg.dev/PROJECT/REPOSITORY
Wenn Sie sich für eine bestimmte Gem-Version authentifizieren möchten, fügen Sie
-v GEM_VERSION dem gem install Befehl hinzu.
Wobei:
- GEM_NAME ist der Name des Gems, für das die Anfrage gestellt wird.
- LOCATION ist der regionale oder multiregionale Standort für das Repository.
- PROJECT ist die ID des Projekts, das das Repository enthält.
- REPOSITORY ist die ID des Repositorys.
In einer .gemrc-Datei authentifizieren
Sie können Ihre globale oder projektspezifische /.gemrc-Datei so konfigurieren, dass Sie sich bei Pull-Anfragen bei Ihren Quellen authentifizieren können. Fügen Sie dazu Folgendes hinzu:
# File: ~/.gemrc
# Use the ACCESS_TOKEN retrieved from export ACCESS_TOKEN="oauth2accesstoken:$(gcloud auth print-access-token)"
<...>
:sources:
- https://ACCESS_TOKEN@LOCATION-ruby.pkg.dev/PROJECT/REPOSITORY/
<...>
Wobei:
- ACCESS_TOKEN ist Ihr OAuth2-Zugriffstoken.
- LOCATION ist der regionale oder multiregionale Standort für das Repository.
- PROJECT ist die ID des Projekts, das das Repository enthält.
- REPOSITORY ist die ID des Repositorys.
Führen Sie Folgendes aus, um ein Gem mit der oder den in Ihrer /.gemrc-Datei definierten Quelle(n) zu installieren:
gem install GEM_NAME
Push-Anfragen authentifizieren
Sie können eine Push-Anfrage in der Google Cloud CLI-Befehlszeile authentifizieren oder Ihre Datei mit den Anmeldedaten aktualisieren.
Push-Anfragen in der Befehlszeile authentifizieren
Führen Sie den folgenden Befehl aus, um Ihre Push-Anfrage zu authentifizieren:
export GEM_HOST_API_KEY="Bearer $(gcloud auth print-access-token)"
gem push GEM_NAME --host https://LOCATION-ruby.pkg.dev/PROJECT/REPOSITORY
Wobei:
- GEM_NAME ist der Name des Gems, für das die Anfrage gestellt wird.
- LOCATION ist der regionale oder multiregionale Standort für das Repository.
- PROJECT ist die ID des Projekts, das das Repository enthält.
- REPOSITORY ist die ID des Repositorys.
Push-Anfragen in einer Datei mit Anmeldedaten authentifizieren
Das gem Befehlszeilentool verwendet die Datei ~/.gem/credentials, um API-Schlüssel
für das Pushen und Pullen von Gems zu speichern. So konfigurieren Sie Ihre Datei mit den Anmeldedaten, um sich bei Push-Anfragen bei Ihren Quellen zu authentifizieren:
Aktualisieren Sie die Datei mit den Anmeldedaten:
Öffnen Sie
~/.gem/credentialsund fügen Sie eine Zeile für Ihr Repository hinzu. Der Schlüssel ist die URL Ihres Repositorys und der Wert istBearer, gefolgt von Ihrem Token::rubygems_api_key: RUBYGEMS_ORG_KEY https://LOCATION-ruby.pkg.dev/PROJECT/REPOSITORY: Bearer ACCESS_TOKENWobei:
- RUBYGEMS_ORG_KEY ist der API-Schlüssel für
RubyGems.org. - LOCATION ist der regionale oder multiregionale Standort für das Repository.
- PROJECT ist die ID des Projekts, das das Repository enthält.
- REPOSITORY ist die ID des Repositorys.
- ACCESS_TOKEN ist Ihr OAuth2-Zugriffstoken.
- RUBYGEMS_ORG_KEY ist der API-Schlüssel für
Pushen Sie Ihr Gem. Sie müssen
GEM_HOST_API_KEYnicht festlegen, da Sie den Schlüssel bereits in Ihrer Datei mit den Anmeldedaten definiert haben.gem push GEM_NAME --host https://LOCATION-ruby.pkg.dev/PROJECT/REPOSITORY
Mit Bundler authentifizieren
Der Ruby Bundler verwaltet Anwendungsabhängigkeiten für ein oder mehrere Gems. So richten Sie Bundler ein:
Fügen Sie die Adresse Ihres Repositorys als
sourcein Ihrer Gemfile hinzu:# Gemfile # <...> source "https://LOCATION-ruby.pkg.dev/PROJECT/REPOSITORY"Authentifizieren Sie sich mit
bundle configbei Ihrem Repository:export GEM_TOKEN="oauth2accesstoken:$(gcloud auth print-access-token)" export HOST="https://LOCATION-ruby.pkg.dev/PROJECT/REPOSITORY" bundle config $HOST $GEM_TOKEN
Wobei:
- LOCATION ist der regionale oder multiregionale Standort für das Repository.
- PROJECT ist die Projekt-ID. Wenn dieses Flag nicht angegeben ist, wird das aktuelle Projekt oder das Standardprojekt verwendet.
- REPOSITORY ist die ID des Repositorys. Wenn Sie ein Standard Artifact Registry Repository konfiguriert haben, wird es verwendet, wenn dieses Flag im Befehl ausgelassen wird.
Sie müssen sich gelegentlich neu bei Ihrem Remote-Repository authentifizieren. Führen Sie in diesem Fall denselben Authentifizierungsbefehl aus Schritt 2 aus.
Weitere Informationen zum Konfigurieren von Bundler, siehe Gemfiles in der Dokumentation zu bundler.io.