Configura l'autenticazione in Artifact Registry per i repository di gem Ruby

Questa pagina descrive come configurare l'autenticazione con un repository di gemme Ruby di Artifact Registry.

Devi eseguire l'autenticazione ad Artifact Registry quando utilizzi un'applicazione di terze parti per connetterti a un repository.

Non è necessario configurare l'autenticazione per Cloud Build o Google Cloud per gli ambienti di runtime come Google Kubernetes Engine e Cloud Run.

Prima di iniziare

  1. Se il repository di destinazione non esiste, crea un repository di gemme Ruby.
  2. Verifica che Ruby sia installato. Per le istruzioni di installazione, consulta il Google Cloud tutorial sulla configurazione di Ruby.
  3. Verifica che l'account utente o il account di servizio che stai utilizzando disponga delle autorizzazioni necessarie per accedere al repository.
  4. Installa Google Cloud CLI. Dopo l'installazione, inizializza Google Cloud CLI eseguendo il comando seguente:

    gcloud init

    Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.

  5. (Facoltativo) Configura le impostazioni predefinite per i comandi gcloud CLI.

Panoramica

Ruby supporta due metodi per autenticare le richieste al repository Artifact Registry:

  • CLI RubyGems: supporta le richieste push e pull. Questa CLI è disponibile con Ruby per impostazione predefinita. Quando esegui l'autenticazione con RubyGems, devi autenticarti ogni volta che effettui una richiesta push o una richiesta di pull al repository.
  • CLI Bundler: supporta le richieste pull. Bundler archivia pacchetti e upstream in un gemfile, che consente agli utenti di standardizzare le configurazioni su più macchine senza dover autenticare ogni singola richiesta di pull. Tuttavia, di tanto in tanto devi comunque autenticare di nuovo le credenziali in Bundler.

    Per installare la CLI Bundler, inserisci gem install bundler.

Eseguire l'autenticazione con la CLI RubyGems

La CLI RubyGems utilizza i token OAuth 2.0 per autenticare una richiesta. Per passare i token OAuth 2.0 alle chiamate ai repository Artifact Registry, devi prima generare il token e poi passarlo con l'indirizzo del repository quando effettui una richiesta. I token hanno una durata di un'ora e devono essere aggiornati ogni ora.

Autenticare le richieste pull

Puoi autenticare una richiesta di pull nella riga di comando di Google Cloud CLI o aggiornando il file .gemrc.

Autenticare le richieste pull nella riga di comando

Per eseguire l'autenticazione per l'ultima versione della gem nella richiesta di pull, esegui il comando seguente:

export GEM_TOKEN="oauth2accesstoken:$(gcloud auth print-access-token)"
gem install GEM_NAME --source https://$GEM_TOKEN@LOCATION-ruby.pkg.dev/PROJECT/REPOSITORY

Per eseguire l'autenticazione per una versione specifica della gemma, aggiungi -v GEM_VERSION al comando gem install.

Dove:

  • GEM_NAME è il nome della gemma per cui viene effettuata la richiesta.
  • LOCATION è la località regionale o multiregionale location del repository.
  • PROJECT è l'ID del progetto contenente il repository.
  • REPOSITORY è l'ID del repository.

Eseguire l'autenticazione in un file .gemrc

Puoi configurare il file /.gemrc globale o specifico del progetto per autenticare le origini nelle richieste pull aggiungendo quanto segue:

# 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/
<...>

Per installare una gemma utilizzando l'origine o le origini definite nel file /.gemrc, esegui:

gem install GEM_NAME

Autenticare le richieste push

Puoi autenticare una richiesta push nella riga di comando di Google Cloud CLI o aggiornando il file delle credenziali.

Autenticare le richieste push nella riga di comando

Per autenticare la richiesta push, esegui il comando seguente:

export GEM_HOST_API_KEY="Bearer $(gcloud auth print-access-token)"
gem push GEM_NAME --host https://LOCATION-ruby.pkg.dev/PROJECT/REPOSITORY

Dove:

  • GEM_NAME è il nome della gemma per cui viene effettuata la richiesta.
  • LOCATION è la località regionale o multiregionale location del repository.
  • PROJECT è l'ID del progetto contenente il repository.
  • REPOSITORY è l'ID del repository.

Autenticare le richieste push in un file delle credenziali

Lo strumento a riga di comando gem utilizza il file ~/.gem/credentials per archiviare le chiavi API per il push e il pull delle gemme. Per configurare il file delle credenziali per autenticare le origini nelle richieste push:

  1. Genera un token di accesso OAuth 2.0 eseguendo il comando seguente:

    gcloud auth print-access-token

    Questo token funge da chiave API per Artifact Registry.

  2. Aggiorna il file delle credenziali:

    1. Apri ~/.gem/credentials e aggiungi una riga per il repository. La chiave è l'URL del repository e il valore è Bearer, seguito dal token:

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

      Dove:

      • RUBYGEMS_ORG_KEY è la chiave API per RubyGems.org.
      • LOCATION è la località regionale o multiregionale location del repository.
      • PROJECT è l'ID del progetto contenente il repository.
      • REPOSITORY è l'ID del repository.
      • OAUTH_TOKEN è il token di accesso OAuth 2.0.
    2. Esegui il push della gemma. Tieni presente che non devi impostare GEM_HOST_API_KEY, perché hai già definito la chiave nel file delle credenziali.

      gem push GEM_NAME --host https://LOCATION-ruby.pkg.dev/PROJECT/REPOSITORY
      

Eseguire l'autenticazione con Bundler

Ruby Bundler gestisce le dipendenze delle applicazioni in una o più gemme. Per configurare Bundler:

  1. Aggiungi l'indirizzo del repository come source nel gemfile:

    # Gemfile
    # <...>
    source "https://LOCATION-ruby.pkg.dev/PROJECT/REPOSITORY"
    
  2. Esegui l'autenticazione al repository utilizzando 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
    

Dove:

  • LOCATION è la località regionale o multiregionale location del repository.
  • PROJECT è l'ID progetto. Se questo flag viene omesso, viene utilizzato il progetto corrente o predefinito.
  • REPOSITORY è l'ID del repository. Se hai configurato un repository Artifact Registry predefinito, questo viene utilizzato quando questo flag viene omesso dal comando.

Di tanto in tanto dovrai eseguire di nuovo l'autenticazione al repository remoto. In questo caso, esegui lo stesso comando di autenticazione del passaggio 2.

Per ulteriori informazioni sulla configurazione di Bundler, consulta la sezione Gemfiles nella documentazione di bundler.io.

Passaggi successivi