Auf dieser Seite wird beschrieben, wie Sie die Authentifizierung mit einem Artifact Registry-Repository für Ruby-Gems 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 für Cloud Build oder Google Cloud-Laufzeitumgebungen wie Google Kubernetes Engine und Cloud Run nicht konfigurieren.
Hinweise
- Wenn das Ziel-Repository nicht vorhanden ist, erstellen Sie ein Ruby-Gem-Repository.
- Prüfen Sie, ob Ruby installiert ist. Eine Installationsanleitung finden Sie imGoogle Cloud Tutorial zum Einrichten von Ruby.
- Prüfen Sie, ob das von Ihnen verwendete Nutzerkonto oder Dienstkonto die erforderlichen Berechtigungen für den Zugriff auf das Repository hat.
-
Installieren Sie die Google Cloud CLI. Initialisieren Sie die Google Cloud CLI nach der Installation mit dem folgenden Befehl:
gcloud initWenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.
- (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-Befehlszeile: Unterstützt Push- und Pull-Anfragen. Diese CLI ist standardmäßig mit Ruby verfügbar. Wenn Sie sich bei RubyGems authentifizieren, müssen Sie sich jedes Mal authentifizieren, wenn Sie eine Push- oder Pull-Anfrage an Ihr Repository senden.
Bundler-Befehlszeile: Unterstützt Pull-Anfragen. Bundler speichert Pakete und Upstreams in einer Gemfile-Datei. 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.
Mit der RubyGems-Befehlszeile authentifizieren
Die RubyGems-Befehlszeile verwendet OAuth2-Tokens zur Authentifizierung einer Anfrage. Wenn Sie OAuth2-Tokens an Aufrufe Ihrer Artifact Registry-Repositories übergeben möchten, müssen Sie zuerst das Token generieren und es dann zusammen mit der Adresse Ihres Repositorys übergeben, wenn Sie eine Anfrage stellen. Tokens sind eine Stunde lang gültig und müssen stündlich aktualisiert werden.
Pull-Anfragen authentifizieren
Sie können einen Pull-Request 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 Ihrem Pull-Request zu authentifizieren:
export GEM_TOKEN="oauth2accesstoken:$(gcloud auth print-access-token)"
gem install GEM_NAME --source https://$GEM_TOKEN@LOCATION-ruby.pkg.dev/PROJECT/REPOSITORY
Wenn Sie sich für eine bestimmte Gem-Version authentifizieren möchten, fügen Sie dem gem install-Befehl -v GEM_VERSION 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.
Authentifizierung in einer .gemrc-Datei
Sie können Ihre globale oder projektspezifische /.gemrc-Datei so konfigurieren, dass sie sich bei Pull-Anfragen bei Ihren Quellen authentifiziert. Fügen Sie dazu Folgendes hinzu:
# 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/
<...>
So installieren Sie ein Gem mit der in Ihrer /.gemrc-Datei definierten Quelle oder den definierten Quellen:
gem install GEM_NAME
Push-Anfragen authentifizieren
Sie können eine Push-Anfrage in der Google Cloud CLI-Befehlszeile authentifizieren oder Ihre Anmeldedatendatei 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 Anmeldedatendatei authentifizieren
Das gem-Befehlszeilentool verwendet die Datei ~/.gem/credentials zum Speichern von API-Schlüsseln zum Pushen und Pullen von Gems. So konfigurieren Sie Ihre Anmeldedatendatei für die Authentifizierung bei Ihren Quellen bei Push-Anfragen:
Generieren Sie mit dem folgenden Befehl ein OAuth2-Zugriffstoken:
gcloud auth print-access-tokenDieses Token dient als API-Schlüssel für Artifact Registry.
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 Ihre Repository-URL und der Wert istBearer, gefolgt von Ihrem Token::rubygems_api_key: RUBYGEMS_ORG_KEY https://LOCATION-ruby.pkg.dev/PROJECT/REPOSITORY: Bearer OAUTH_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.
- OAUTH_TOKEN ist Ihr OAuth2-Zugriffstoken.
- RUBYGEMS_ORG_KEY ist der API-Schlüssel für
Geben Sie Ihr Gem ein. Sie müssen
GEM_HOST_API_KEYnicht festlegen, da Sie den Schlüssel bereits in Ihrer Anmeldedatendatei definiert haben.gem push GEM_NAME --host https://LOCATION-ruby.pkg.dev/PROJECT/REPOSITORY
Mit Bundler authentifizieren
Der Ruby-Bundler verwaltet Anwendungsabhängigkeiten über ein oder mehrere Gems hinweg. So richten Sie Bundler ein:
Fügen Sie die Adresse Ihres Repositorys als
sourcein Ihre Gemfile ein:# Gemfile # <...> source "https://LOCATION-ruby.pkg.dev/PROJECT/REPOSITORY"Authentifizieren Sie sich mit
bundle configin 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 finden Sie in der bundler.io-Dokumentation unter Gemfiles.