Gestire i Gem Ruby

Questa pagina descrive come aggiungere, visualizzare ed eliminare gemme Ruby e versioni delle gemme.

Prima di iniziare

  1. Installa e inizializza Google Cloud CLI.

    Per eseguire i comandi per i repository Ruby è necessaria Google Cloud CLI versione 354.0.0 o successive. Puoi controllare la versione con il comando:

    gcloud version
    
  2. Se il repository di destinazione non esiste, creane uno per i pacchetti Ruby.

  3. Verifica che Ruby sia installato. Per le istruzioni di installazione, consulta l'Google Cloud esercitazione sulla configurazione di Ruby.

  4. (Facoltativo) Imposta i valori predefiniti per i comandi gcloud.

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per gestire i gem, chiedi all'amministratore di concederti i seguenti ruoli IAM sul repository:

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.

Aggiungere Gem

I pacchetti in Ruby sono chiamati gemme, dove ogni gemma contiene un nome, una versione e una piattaforma. Un progetto Ruby deve contenere anche un gemfile, ovvero un file di configurazione che specifica le dipendenze gem richieste.

Modalità repository: standard

Quando crei un progetto Ruby, i file di distribuzione vengono salvati in una sottodirectory lib del progetto. Puoi quindi utilizzare RubyGems per caricare gemme in un repository standard.

Per aggiungere un gem al tuo repository Artifact Registry:

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

Dove:

  • GEM_NAME è il nome del Gem da eseguire il push nel repository.
  • LOCATION è la posizione del tuo repository.
  • PROJECT è l'ID progetto. Se questo flag viene omesso, viene utilizzato il progetto corrente o predefinito.
  • REPOSITORY è il nome del tuo repository in Artifact Registry.

Visualizzare i gem e le versioni

Modalità repository: standard

Per visualizzare i pacchetti e le relative versioni utilizzando la Google Cloud console o gcloud:

Console

  1. Apri la pagina Repository nella Google Cloud console.

    Apri la pagina Repositori

  2. Nell'elenco dei repository, fai clic sul repository appropriato.

    La pagina Pacchetti elenca i pacchetti nel repository.

  3. Fai clic su un pacchetto per visualizzarne le versioni.

gcloud

Per elencare i pacchetti in un repository, esegui il comando seguente:

gcloud artifacts packages list [--repository=REPOSITORY] [--location=LOCATION]

Sostituisci quanto segue:

  • REPOSITORY è il nome del repository. Se hai configurato un repository predefinito, puoi omettere questo flag per utilizzare quello predefinito.
  • LOCATION è la posizione regionale o multiregionale del repository. Se hai configurato una località predefinita, puoi omettere questo flag per utilizzare quella predefinita.

Per visualizzare le versioni di un pacchetto, esegui questo comando:

gcloud artifacts versions list --package=PACKAGE \
    [--repository=REPOSITORY] [--location=LOCATION]

Sostituisci quanto segue:

  • PACKAGE è l'ID del pacchetto o l'identificatore completamente qualificato del pacchetto.
  • REPOSITORY è il nome del repository. Se hai configurato un repository predefinito, puoi omettere questo flag per utilizzare quello predefinito.
  • LOCATION è la posizione regionale o multiregionale del repository. Utilizza questo flag per visualizzare i repository in una posizione specifica. Se hai configurato una località predefinita, puoi omettere questo flag per utilizzare quella predefinita.

Per i repository remoti, l'elenco restituito deve includere tutte le dipendenze dirette e transitive.

Elenco file

Modalità repository: standard

Puoi elencare i file in un repository, i file in tutte le versioni di un pacchetto specifico o i file in una versione specifica di un pacchetto.

Per tutti i comandi seguenti, puoi impostare un numero massimo di file da restituire aggiungendo il flag --limit al comando.

Per elencare tutti i file nel progetto, nel repository e nella posizione predefiniti quando sono configurati i valori predefiniti:

gcloud artifacts files list

Per elencare i file in un progetto, un repository e una località specifici, esegui il comando:

gcloud artifacts files list \
    --project=PROJECT \
    --repository=REPOSITORY \
    --location=LOCATION

Per elencare i file per tutte le versioni di un pacchetto specifico:

gcloud artifacts files list \
    --project=PROJECT \
    --repository=REPOSITORY \
    --location=LOCATION \
    --package=PACKAGE

Per elencare i file per una versione specifica del pacchetto:

gcloud artifacts files list \
    --project=PROJECT \
    --repository=REPOSITORY \
    --location=LOCATION \
    --package=PACKAGE \
    --version=VERSION

Sostituisci i seguenti valori:

  • LOCATION: la posizione regionale o multiregionale del repository.
  • PROJECT: il tuo Google Cloud ID progetto. Se l'ID progetto contiene due punti (:), consulta Progetti basati sul dominio.
  • REPOSITORY: il nome del repository in cui è archiviata l'immagine.
  • PACKAGE: il nome del pacchetto.
  • VERSION: la versione del pacchetto.

Esempi

Considera le seguenti informazioni sul pacchetto:

  • Progetto: my-project
  • Repository: my-repo
  • Posizione del repository: us-west1
  • Pacchetto: my-app

Il comando seguente elenca tutti i file nel repository my-repo nella posizione us-west1 all'interno del progetto predefinito:

gcloud artifacts files list \
    --location=us-west1 \
    --repository=my-repo
Il comando seguente elenca i file nella versione 1.0 del pacchetto.

gcloud artifacts files list \
    --project=my-project \
    --location=us-west1 \
    --repository=my-repo \
    --package=my-app \
    --version=1.0

Installare gem

Modalità repository: standard

Per installare l'ultima release stabile di un pacchetto:

gem install GEM_NAME

Per i repository standard, scarichi un pacchetto direttamente dal repository.

Per un repository remoto, scarichi una copia memorizzata nella cache del pacchetto e delle relative dipendenze. Se non esiste una copia memorizzata nella cache, il repository remoto scarica il pacchetto dalla sorgente upstream e lo memorizza nella cache prima di fornirtelo. Puoi verificare che il repository remoto abbia recuperato i pacchetti dalla sorgente upstream visualizzando l'elenco dei pacchetti nel repository.

Per un repository virtuale, Artifact Registry esegue la ricerca del pacchetto richiesto nei repository upstream.

  • I repository remoti upstream scaricano e memorizzano nella cache il pacchetto richiesto se non esiste una copia memorizzata nella cache. I repository virtuali forniscono solo i pacchetti richiesti, non li archiviano.
  • Se richiedi una versione disponibile in più di un repository upstream, Artifact Registry sceglie un repository upstream da utilizzare in base alle impostazioni di priorità configurate per il repository virtuale.

Ad esempio, considera un repository virtuale con le seguenti impostazioni di priorità per i repository upstream:

  • main-repo: priorità impostata su 100
  • secondary-repo1: priorità impostata su 80.
  • secondary-repo2: priorità impostata su 80.
  • test-repo: priorità impostata su 20.

main-repo ha il valore di priorità più alto, quindi il repository virtuale lo cerca sempre per primo.

Sia secondary-repo1 che secondary-repo2 hanno la priorità impostata su 80. Se un pacchetto richiesto non è disponibile in main-repo, Artifact Registry esegue la ricerca in questi repository. Poiché hanno lo stesso valore di priorità, Artifact Registry può scegliere di pubblicare un pacchetto da uno dei due repository se la versione è disponibile in entrambi.

test-repo ha il valore di priorità più basso e pubblicherà un artefatto archiviato se nessuno degli altri repository upstream lo contiene.

Informazioni aggiuntive

Quando esegui il push o il pull di gem da un repository Artifact Registry, se il gem richiesto o le relative dipendenze non vengono trovati nel repository specificato, il client gem utilizza qualsiasi altra origine definita nel gemfile per il gem. Se vuoi recuperare e installare solo da Artifact Registry, esegui il seguente comando per rimuovere un'origine non Artifact Registry dal gemfile:

gem sources --remove SOURCE

Per aggiungere nuovamente rubygems.org come origine:

gem sources --add SOURCE

dove SOURCE è l'indirizzo dell'origine, ad esempio https://rubygems.org.

Eliminare pacchetti e versioni

Modalità repository: standard

Puoi eliminare un pacchetto e tutte le relative versioni oppure eliminare una versione specifica.

  • Una volta eliminato un pacchetto, non puoi annullare l'azione.
  • Per i repository remoti, viene eliminata solo la copia memorizzata nella cache del pacchetto. L'origine a monte non è interessata. Se elimini un pacchetto memorizzato nella cache, Artifact Registry lo scaricherà e memorizzerà di nuovo nella cache la volta successiva che il repository riceve una richiesta per la stessa versione del pacchetto.

Prima di eliminare un pacchetto o una versione del pacchetto, verifica di aver comunicato o risolto eventuali dipendenze importanti.

Per eliminare un pacchetto:

Console

  1. Apri la pagina Repository nella Google Cloud console.

    Apri la pagina Repositori

  2. Nell'elenco dei repository, fai clic sul repository appropriato.

    La pagina Pacchetti elenca i pacchetti nel repository.

  3. Seleziona il pacchetto da eliminare.

  4. Fai clic su ELIMINA.

  5. Nella finestra di dialogo di conferma, fai clic su ELIMINA.

gcloud

Esegui questo comando:

gcloud artifacts packages delete PACKAGE \
    [--repository=REPOSITORY] [--location=LOCATION] [--async]

Sostituisci quanto segue:

  • PACKAGE è il nome del pacchetto nel repository.
  • REPOSITORY è il nome del repository. Se hai configurato un repository predefinito, puoi omettere questo flag per utilizzare quello predefinito.
  • LOCATION è la posizione regionale o multiregionale del repository. Utilizza questo flag per visualizzare i repository in una posizione specifica. Se hai configurato una località predefinita, puoi omettere questo flag per utilizzare quella predefinita.

Il flag --async fa sì che il comando ritorni immediatamente, senza attendere il completamento dell'operazione in corso.

Per eliminare le versioni di un pacchetto:

Console

  1. Apri la pagina Repository nella Google Cloud console.

    Apri la pagina Repositori

  2. Nell'elenco dei repository, fai clic sul repository appropriato.

    La pagina Pacchetti elenca i pacchetti nel repository.

  3. Fai clic su un pacchetto per visualizzarne le versioni.

  4. Seleziona le versioni da eliminare.

  5. Fai clic su ELIMINA.

  6. Nella finestra di dialogo di conferma, fai clic su ELIMINA.

gcloud

Esegui questo comando:

gcloud artifacts versions delete VERSION \
    --package=PACKAGE \
    [--repository=REPOSITORY] [--location=LOCATION] \
    [--async]

Sostituisci quanto segue:

  • VERSION è il nome della versione da eliminare.
  • PACKAGE è il nome del pacchetto nel repository.
  • REPOSITORY è il nome del repository. Se hai configurato un repository predefinito, puoi omettere questo flag per utilizzare quello predefinito.
  • LOCATION è la posizione regionale o multiregionale del repository. Utilizza questo flag per visualizzare i repository in una posizione specifica. Se hai configurato una località predefinita, puoi omettere questo flag per utilizzare quella predefinita.

Il flag --async fa sì che il comando ritorni immediatamente, senza attendere il completamento dell'operazione in corso.

Limitazioni

  • Artifact Registry non supporta l'aggiunta di repository come origini utilizzando il comando gem sources -add. Tuttavia, puoi aggiungere manualmente le origini al file .gemrc o passare il flag --source direttamente nel comando gem.

  • Artifact Registry non supporta il pull di gem utilizzando gem fetch.

Passaggi successivi