Archiviare i gem Ruby in Artifact Registry
Prima di iniziare
-
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 theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Artifact Registry API.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
Make sure that you have the following role or roles on the project: Artifact Registry Administrator
Check for the roles
-
In the Google Cloud console, go to the IAM page.
Go to IAM - Select the project.
-
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.
- 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
-
In the Google Cloud console, go to the IAM page.
Go to IAM - Select the project.
- Click Grant access.
-
In the New principals field, enter your user identifier. This is typically the identifier for a user in a workforce identity pool. For details, see Represent workforce pool users in IAM policies, or contact your administrator.
- Click Select a role, then search for the role.
- To grant additional roles, click Add another role and add each additional role.
- Click Save.
-
Ruoli obbligatori
Per ottenere le autorizzazioni necessarie per creare e gestire i repository di gem Ruby di Artifact Registry, chiedi all'amministratore di concederti il ruolo IAM Amministratore di Artifact Registry (roles/artifactregistry.admin) nel tuo progetto.
Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.
Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.
Avvia Cloud Shell
In questa guida rapida utilizzerai Cloud Shell, un ambiente shell per la gestione delle risorse ospitate su Google Cloud.
Cloud Shell include Google Cloud CLI e Ruby preinstallati. gcloud CLI fornisce l'interfaccia a riga di comando principale per per Google Cloud.
Avvia Cloud Shell:
Vai alla Google Cloud console.
Nella barra degli strumenti della Google Cloud console, fai clic su Attiva Cloud Shell.
Una sessione di Cloud Shell si apre in un frame nella parte inferiore della console.
Utilizza questa shell per eseguire i comandi gcloud.
Configura l'autenticazione
Ruby supporta due metodi per autenticare le richieste al repository Artifact Registry:
- RubyGems CLI: supporta le richieste di 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 di push o pull al repository.
Bundler CLI: supporta le richieste di 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 tue credenziali in Bundler.
Per installare Bundler CLI, inserisci
gem install bundler.
Esegui l'autenticazione con RubyGems CLI
RubyGems CLI utilizza i token OAuth2 per autenticare una richiesta. Per passare i token OAuth2 alle chiamate ai repository Artifact Registry, devi passare il token OAuth2 con l'indirizzo del repository quando effettui una richiesta. I token hanno una durata di un'ora e devono essere aggiornati ogni ora.
Autentica le richieste di pull
Puoi autenticare una richiesta di pull nella riga di comando di Google Cloud CLI o aggiornando il file .gemrc.
Autentica le richieste di pull nella riga di comando
Per eseguire l'autenticazione per l'ultima versione del gem nella richiesta di pull, esegui il comando seguente:
gem install GEM_NAME --source https://$ACCESS_TOKEN@LOCATION-ruby.pkg.dev/PROJECT/REPOSITORY
Per eseguire l'autenticazione per una versione specifica del gem, aggiungi
-v GEM_VERSION al comando gem install.
Dove:
- GEM_NAME è il nome del gem per cui viene effettuata la richiesta.
- LOCATION è la località regionale o multi-regionale del repository.
- PROJECT è l'ID del progetto contenente il repository.
- REPOSITORY è l'ID del repository.
Esegui l'autenticazione in un file .gemrc
Puoi configurare il file /.gemrc globale o specifico del progetto per eseguire l'autenticazione alle origini nelle richieste di pull aggiungendo quanto segue:
# 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/
<...>
Dove:
- ACCESS_TOKEN è il tuo token di accesso OAuth2.
- LOCATION è la località regionale o multi-regionale del repository.
- PROJECT è l'ID del progetto contenente il repository.
- REPOSITORY è l'ID del repository.
Per installare un gem utilizzando l'origine o le origini definite nel file /.gemrc, esegui:
gem install GEM_NAME
Autentica le richieste di push
Puoi autenticare una richiesta di push nella riga di comando di Google Cloud CLI o aggiornando il file delle credenziali.
Autentica le richieste di push nella riga di comando
Per autenticare la richiesta di 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 del gem per cui viene effettuata la richiesta.
- LOCATION è la località regionale o multi-regionale del repository.
- PROJECT è l'ID del progetto contenente il repository.
- REPOSITORY è l'ID del repository.
Autentica le richieste di 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 dei gem. Per configurare il file delle credenziali per eseguire l'autenticazione alle origini nelle richieste di push:
Aggiorna il file delle credenziali:
Apri
~/.gem/credentialse 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 ACCESS_TOKENDove:
- RUBYGEMS_ORG_KEY è la chiave API per
RubyGems.org. - LOCATION è la località regionale o multi-regionale del repository.
- PROJECT è l'ID del progetto contenente il repository.
- REPOSITORY è l'ID del repository.
- ACCESS_TOKEN è il tuo token di accesso OAuth2.
- RUBYGEMS_ORG_KEY è la chiave API per
Esegui il push del gem. 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
Esegui l'autenticazione con Bundler
Ruby Bundler gestisce le dipendenze delle applicazioni in uno o più gem. Per configurare Bundler:
Aggiungi l'indirizzo del repository come
sourcenel gemfile:# Gemfile # <...> source "https://LOCATION-ruby.pkg.dev/PROJECT/REPOSITORY"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 multi-regionale 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 saperne di più sulla configurazione di Bundler, consulta Gemfiles nella documentazione di bundler.io.
Per saperne di più sui metodi di autenticazione, consulta Configurare l'autenticazione ad Artifact Registry per i repository di gem Ruby.
Crea un repository
Crea il repository per il gem.
Esegui il comando seguente per creare un nuovo repository di gem Ruby nel progetto corrente denominato
quickstart-ruby-reponella localitàus-west1.gcloud artifacts repositories create quickstart-ruby-repo \ --repository-format=ruby \ --location=us-west1 \ --description="Ruby gem repository"Esegui questo comando per verificare che il repository sia stato creato:
gcloud artifacts repositories listPer semplificare i comandi
gcloud, imposta il repository predefinito suquickstart-ruby-repoe la località predefinita suus-west1. Una volta impostati i valori, non devi specificarli nei comandigcloudche richiedono un repository o una località.Per impostare il repository, esegui il comando seguente:
gcloud config set artifacts/repository quickstart-ruby-repoPer impostare la località, esegui il comando seguente:
gcloud config set artifacts/location us-west1Per ulteriori informazioni su questi comandi, consulta la documentazione di gcloud config set.
Scarica un gem
Quando crei un progetto Ruby, i file di distribuzione vengono salvati in una sottodirectory lib nel progetto Ruby. Per semplificare questa guida rapida, creerai una directory e poi scaricherai un gem in quella directory.
Per creare la directory, esegui questo comando:
mkdir ruby-quickstart
mkdir ruby-quickstart/lib
cd ruby-quickstart/lib
Poi scarica il gem. Puoi utilizzare il tuo gem o scaricare un gem di esempio dalla pagina Gem popolari su rubygems.org. Per scaricare un gem da rubygems.org, esegui questo comando:
gem fetch GEM_NAME
Ora hai un gem denominato GEM_NAME nella directory
ruby_quickstart/lib. Nella sezione successiva, utilizzerai RubyGems CLI per eseguire il push del gem nel repository.
Esegui il push del gem nel repository
Per eseguire il push del gem nel repository, esegui questo comando:
gem push GEM_NAME --host https://us-west1-ruby.pkg.dev/PROJECT/quickstart-ruby-repo
Dove:
- GEM_NAME è il nome del gem di cui eseguire il push nel repository.
- PROJECT è l'ID progetto. Se questo flag viene omesso, allora il progetto corrente o predefinito viene utilizzato.
Visualizza il gem nel repository
Per verificare che il gem sia stato aggiunto, elenca i pacchetti nel repository ruby-quickstart.
Esegui questo comando:
gcloud artifacts packages list --repository=ruby-quickstart
Per visualizzare le versioni di un gem, esegui questo comando:
gcloud artifacts versions list --package=GEM_NAME
Installa il gem
Per installare il gem di cui hai appena eseguito il push nel repository Artifact Registry, esegui questo comando:
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
Dove:
- GEM_NAME è il nome del gem da installare nel repository.
- PROJECT è l'ID progetto. Se questo flag viene omesso, allora il progetto corrente o predefinito viene utilizzato.
Risoluzione dei problemi
Per saperne di più, consulta Risoluzione dei problemi relativi ai gem Ruby.
Esegui la pulizia
Per evitare che al tuo Google Cloud account vengano addebitati costi relativi alle risorse utilizzate in questa pagina, segui questi passaggi.
Prima di rimuovere il repository, assicurati che tutti i gem che vuoi conservare siano disponibili in un'altra posizione.
Per eliminare il repository
quickstart-ruby-repo, esegui questo comando:gcloud artifacts repositories delete quickstart-ruby-repoSe vuoi rimuovere il repository predefinito e le impostazioni di posizione configurate per la configurazione
gcloudattiva, esegui i comandi seguenti:gcloud config unset artifacts/repository gcloud config unset artifacts/location
Passaggi successivi
- Scopri di più sulla configurazione dell'autenticazione
- Scopri di più sulla gestione dei repository
- Scopri di più sulla gestione dei pacchetti
- Leggi le nostre risorse su DevOps ed esplora il nostro programma di ricerca.