Ruby-Gems in Artifact Registry speichern

In dieser Kurzanleitung wird gezeigt, wie Sie ein privates Ruby-Repository für Artifact Registry einrichten und dann ein Paket, auch Gem genannt, in dieses Repository hochladen.

Hinweise

  1. 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.
  2. 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 the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. 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 the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  5. Make sure that you have the following role or roles on the project: Artifact Registry Administrator

    Check for the roles

    1. In the Google Cloud console, go to the IAM page.

      Go to IAM
    2. Select the project.
    3. 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.

    4. 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

    1. In the Google Cloud console, go to the IAM page.

      IAM aufrufen
    2. Wählen Sie das Projekt aus.
    3. Klicken Sie auf Zugriffsrechte erteilen.
    4. Geben Sie im Feld Neue Hauptkonten Ihre Nutzer-ID ein. Das ist in der Regel die E‑Mail-Adresse eines Google-Kontos.

    5. Wählen Sie in der Liste Rolle auswählen eine Rolle aus.
    6. Klicken Sie auf Weitere Rolle hinzufügen, wenn Sie weitere Rollen zuweisen möchten.
    7. Klicken Sie auf Speichern.
  6. 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 the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  7. Verify that billing is enabled for your Google Cloud project.

  8. 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 the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  9. Make sure that you have the following role or roles on the project: Artifact Registry Administrator

    Check for the roles

    1. In the Google Cloud console, go to the IAM page.

      Go to IAM
    2. Select the project.
    3. 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.

    4. 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

    1. In the Google Cloud console, go to the IAM page.

      IAM aufrufen
    2. Wählen Sie das Projekt aus.
    3. Klicken Sie auf Zugriffsrechte erteilen.
    4. Geben Sie im Feld Neue Hauptkonten Ihre Nutzer-ID ein. Das ist in der Regel die E‑Mail-Adresse eines Google-Kontos.

    5. Wählen Sie in der Liste Rolle auswählen eine Rolle aus.
    6. Klicken Sie auf Weitere Rolle hinzufügen, wenn Sie weitere Rollen zuweisen möchten.
    7. Klicken Sie auf Speichern.
  10. Cloud Shell starten

    In dieser Kurzanleitung verwenden Sie Cloud Shell, eine Shell-Umgebung für die Verwaltung von Ressourcen, die inGoogle Cloudgehostet werden.

    Die Google Cloud CLI und Ruby sind in Cloud Shell vorinstalliert. Die gcloud CLI bietet die primäre Befehlszeile für Google Cloud.

    Cloud Shell aufrufen

    1. Zur Google Cloud Console.

      Google Cloud Console

    2. Klicken Sie in der Symbolleiste der Google Cloud Console auf Cloud Shell aktivieren.

    In einem Frame im unteren Teil der Console wird eine Cloud Shell-Sitzung geöffnet. Mit dieser Shell führen Sie gcloud-Befehle aus.

    Authentifizierung konfigurieren

    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 bundler ein, 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:

    1. Generieren Sie mit dem folgenden Befehl ein OAuth2-Zugriffstoken:

      gcloud auth print-access-token

      Dieses Token dient als API-Schlüssel für Artifact Registry.

    2. Aktualisieren Sie die Datei mit den Anmeldedaten:

      1. Öffnen Sie ~/.gem/credentials und fügen Sie eine Zeile für Ihr Repository hinzu. Der Schlüssel ist Ihre Repository-URL und der Wert ist Bearer, gefolgt von Ihrem Token:

        :rubygems_api_key: RUBYGEMS_ORG_KEY
        https://LOCATION-ruby.pkg.dev/PROJECT/REPOSITORY: Bearer OAUTH_TOKEN
        

        Wobei:

        • 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.
      2. Geben Sie Ihr Gem ein. Sie müssen GEM_HOST_API_KEY nicht 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:

    1. Fügen Sie die Adresse Ihres Repositorys als source in Ihre Gemfile ein:

      # Gemfile
      # <...>
      source "https://LOCATION-ruby.pkg.dev/PROJECT/REPOSITORY"
      
    2. Authentifizieren Sie sich mit bundle config in 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:

    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.

    Weitere Informationen zu Authentifizierungsmethoden finden Sie unter Authentifizierung für Artifact Registry für Ruby-Gem-Repositories konfigurieren.

    Repository erstellen

    Erstellen Sie das Repository für Ihr Gem.

    1. Führen Sie den folgenden Befehl aus, um ein neues Ruby-Gem-Repository im aktuellen Projekt mit dem Namen quickstart-ruby-repo am Speicherort us-west1 zu erstellen.

      gcloud artifacts repositories create quickstart-ruby-repo \
          --repository-format=ruby \
          --location=us-west1 \
          --description="Ruby gem repository"
      
    2. Führen Sie den folgenden Befehl aus, um zu prüfen, ob Ihr Repository erstellt wurde:

      gcloud artifacts repositories list
      
    3. Um die gcloud-Befehle zu vereinfachen, legen Sie für das Standard-Repository den Wert quickstart-ruby-repo und für den Standard-Speicherort us-west1 fest. Nachdem Sie die Werte festgelegt haben, müssen Sie diese nicht mehr in gcloud-Befehlen angeben, für die ein Repository oder Speicherort erforderlich ist.

      Führen Sie den folgenden Befehl aus, um das Repository festzulegen:

      gcloud config set artifacts/repository quickstart-ruby-repo
      

      Führen Sie den folgenden Befehl aus, um den Standort festzulegen:

      gcloud config set artifacts/location us-west1
      

      Weitere Informationen zu diesen Befehlen finden Sie in der Dokumentation zu gcloud config set.

    Gem herunterladen

    Wenn Sie ein Ruby-Projekt erstellen, werden die Verteilungsdateien in einem Unterverzeichnis lib in Ihrem Ruby-Projekt gespeichert. Um diese Kurzanleitung zu vereinfachen, erstellen Sie ein Verzeichnis und laden dann ein Gem in dieses Verzeichnis herunter.

    Führen Sie den folgenden Befehl aus, um das Verzeichnis zu erstellen:

    mkdir ruby-quickstart
    mkdir ruby-quickstart/lib
    cd ruby-quickstart/lib
    

    Laden Sie als Nächstes Ihr Gem herunter. Sie können entweder Ihr eigenes Gem verwenden oder ein Beispiel-Gem von der Seite Popular Gems auf rubygems.org herunterladen. Führen Sie den folgenden Befehl aus, um ein Gem von rubygems.org herunterzuladen:

    gem fetch GEM_NAME
    

    Sie haben jetzt ein Gem mit dem Titel GEM_NAME im Verzeichnis ruby_quickstart/lib. Im nächsten Abschnitt verwenden Sie die RubyGems-Befehlszeile, um Ihr Gem in Ihr Repository zu übertragen.

    Gem in das Repository hochladen

    Führen Sie den folgenden Befehl aus, um das Gem in Ihr Repository zu übertragen:

    gem push GEM_NAME --host https://us-west1-ruby.pkg.dev/PROJECT/quickstart-ruby-repo
    

    Wobei:

    • GEM_NAME ist der Name des Gems, das in Ihr Repository übertragen werden soll.
    • PROJECT ist die Projekt-ID. Wenn dieses Flag nicht angegeben ist, wird das aktuelle Projekt oder das Standardprojekt verwendet.

    Gem im Repository ansehen

    So prüfen Sie, ob Ihr Gem hinzugefügt wurde: Listen Sie die Pakete im ruby-quickstart-Repository auf.

    Führen Sie dazu diesen Befehl aus:

    gcloud artifacts packages list --repository=ruby-quickstart
    

    Führen Sie den folgenden Befehl aus, um Versionen für ein Gem aufzurufen:

    gcloud artifacts versions list --package=GEM_NAME
    

    Gem installieren

    Führen Sie den folgenden Befehl aus, um das Gem zu installieren, das Sie gerade in Ihr Artifact Registry-Repository übertragen haben:

    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
    

    Wobei:

    • GEM_NAME ist der Name des Gems, das in Ihrem Repository installiert werden soll.
    • PROJECT ist die Projekt-ID. Wenn dieses Flag nicht angegeben ist, wird das aktuelle Projekt oder das Standardprojekt verwendet.

    Fehlerbehebung

    Weitere Informationen finden Sie unter Fehlerbehebung für Ruby-Gems.

    Bereinigen

    Mit den folgenden Schritten vermeiden Sie, dass Ihrem Google Cloud -Konto die auf dieser Seite verwendeten Ressourcen in Rechnung gestellt werden:

    Prüfen Sie vor dem Entfernen des Repositorys, ob alle Gems, die Sie beibehalten möchten, an einem anderen Speicherort verfügbar sind.

    1. Um das Repository quickstart-ruby-repo zu löschen, führen Sie folgenden Befehl aus:

      gcloud artifacts repositories delete quickstart-ruby-repo
      
    2. Wenn Sie die Einstellungen für das Standard-Repository und den Standard-Speicherort entfernen möchten, die Sie für die aktive gcloud-Konfiguration festgelegt haben, führen Sie die folgenden Befehle aus:

      gcloud config unset artifacts/repository
      gcloud config unset artifacts/location
      

    Nächste Schritte