Gestire i moduli Go

Questa pagina spiega come gestire i moduli Go in pacchetto archiviati Artifact Registry.

Prima di iniziare

  1. Se il repository di destinazione non esiste, per creare un nuovo repository. Scegli Go come formato del repository.
  2. Verifica di disporre delle autorizzazioni necessarie per il repository.
  3. (Facoltativo) Configura i valori predefiniti per i comandi gcloud.
  4. Installa Vai 1.15 o versioni successive.
  5. Installa il componente aggiuntivo package-go-module per l'interfaccia a riga di comando gcloud:

    gcloud components install package-go-module
  6. Configura Go per authenticate con Artifact Registry.

Ruoli obbligatori

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

Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso a progetti, cartelle e organizzazioni.

Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.

Caricare un modulo

Modalità del repository: standard

Per pacchettizzare e caricare un modulo nel tuo repository, esegui il seguente comando:

  gcloud artifacts go upload --project=PROJECT \
      --repository=REPOSITORY \
      --location=LOCATION \
      --module-path=MODULE_PATH \
      --version=VERSION \
      --source=SOURCE_LOCATION

Sostituisci quanto segue:

  • PROJECT con Google Cloud ID progetto.
  • REPOSITORY con il nome del repository in cui quando viene archiviato un pacchetto.
  • LOCATION con una o più regioni località del repository.
  • MODULE_PATH con il percorso del modulo. Ad esempio: example.com/foo Consulta le Riferimento ai moduli Go per ulteriori informazioni.
  • VERSION con versione semantica del modulo nel formato vX.Y.Z, dove X è la versione principale, Y è la e Z è la versione patch.
  • SOURCE_LOCATION con il percorso della directory root di Go in maggior dettaglio più avanti in questo modulo. Se ometti il flag --source, il valore predefinito è la directory attuale.

Il modulo viene caricato in Artifact Registry.

Per ulteriori informazioni sulla creazione di moduli Go, consulta questo tutorial.

Caricare una nuova versione del modulo

Modalità del repository: standard

Per caricare una nuova versione del modulo nel progetto, nel repository e nella località predefiniti quando i valori predefiniti sono configurati, esegui il seguente comando con il numero della nuova versione:

  gcloud artifacts go upload \
      --module-path=MODULE_PATH \
      --version=VERSION \
      --source=SOURCE_LOCATION

Sostituisci VERSION con la versione del modulo aggiornato. Ad esempio: per caricare la versione 0.1.1 di un modulo con il percorso example.com/foo, esegui seguente comando:

  gcloud artifacts go upload \
      --module-path=example.com/foo \
      --version=v0.1.1 \
      --source=SOURCE_LOCATION

Per contrassegnare un modulo come versione pre-release, aggiungi un trattino dopo il VERSION e aggiungi gli identificatori pre-release del modulo:

  gcloud artifacts go upload \
      --module-path=MODULE_PATH \
      --version=VERSION-PRE_RELEASE_IDENTIFIERS \
      --source=SOURCE_LOCATION

Sostituisci PRE_RELEASE_IDENTIFIERS con caratteri alfanumerici ASCII separati da punti e trattini. Ad esempio, per caricare una pre-release di un modulo con il percorso example.com/foo identificato da alpha.x.12m.5, esegui il seguente comando:

  gcloud artifacts go upload \
      --module-path=example.com/foo \
      --version=v1.0.0-alpha.x.12m.5 \
      --source=SOURCE_LOCATION

Carica una nuova versione principale

Modalità del repository: standard

Le versioni principali non sono compatibili con le versioni precedenti. Per evitare di importare una modifica che provoca un errore, le versioni principali dopo il giorno v1 devono avere percorsi di moduli diversi rispetto alle versioni precedenti. A partire da v2, la versione principale viene aggiunta alla fine del percorso del modulo.

Ad esempio, il percorso del modulo per v2.0.0 di example.com/foo è example.com/foo/v2.

La best practice consigliata è sviluppare versioni principali dopo il giorno v1 in separate con il nome del suffisso della versione principale.

Per caricare una nuova versione principale 2.0.0 di un modulo con il percorso example.com/foo al progetto, al repository e alla località predefiniti quando sono configurati i valori predefiniti:

  gcloud artifacts go upload --module-path=example.com/foo/v2 --version=v2.0.0

Elenca moduli

Modalità repository: standard

Esegui il seguente comando per ispezionare un modulo Go caricato nel progetto, nel repository e nella posizione predefiniti quando i valori predefiniti sono configurati:

  gcloud artifacts packages list

L'output sarà simile al seguente:

  Listing items under project my-project, location us-west1, repository my-repo.

  PACKAGE                   CREATE_TIME          UPDATE_TIME
  example.com/foo           2022-06-03T20:43:39  2022-06-20T20:37:40

Visualizza i dettagli della versione del modulo

Modalità del repository: standard

Esegui il seguente comando per visualizzare le versioni di un modulo nel progetto, nel repository e nella posizione predefiniti quando sono configurati i valori predefiniti:

  gcloud artifacts versions list --package=MODULE_PATH

L'output sarà simile al seguente:

  Listing items under project my-project, location us-west1, repository my-repo, package example.com/foo.

  VERSION  DESCRIPTION  CREATE_TIME          UPDATE_TIME
  v0.1.0                2022-06-03T20:43:39  2022-06-03T20:43:39
  v0.1.1                2022-06-20T20:37:40  2022-06-20T20:37:40

Utilizzare un modulo come dipendenza

Modalità repository: standard

Per importare i moduli archiviati in Artifact Registry, devi indicare a Go di cercare le dipendenze da Artifact Registry e di bypassare il database dei checksum. Segui le istruzioni per configurare l'autenticazione e il pulsante Go in Configurare l'autenticazione per Go.

  1. Se utilizzi credenziali di breve durata per l'autenticazione ad Artifact Registry, devi aggiornare il token OAuth eseguendo il seguente comando:

      GOPROXY=proxy.golang.org \
      go run github.com/GoogleCloudPlatform/artifact-registry-go-tools/cmd/auth@latest refresh
    
  2. Se il modulo non ha ancora un file go.mod, cambia le directory in cartella del modulo ed esegui go mod init per creare un file go.mod del pacco.

      go mod init MODULE_PATH
    

    Sostituisci MODULE_PATH con il percorso del modulo memorizzato in Artifact Registry. Consulta le Riferimento ai moduli Go per ulteriori informazioni.

  3. Per richiedere la versione del modulo archiviata in Artifact Registry, modifica il file go.mod in modo che sia simile al seguente:

    
    module example.com/bar
    
    go 1.19
    
    require example.com/foo v0.1.0
    

    Sostituisci quanto segue:

    • example.com/foo è il percorso del modulo richiesto
    • v0.1.0 è la versione archiviata in Artifact Registry
  4. Includi il percorso del modulo come di consueto nella sezione import del file main.go.

    Ad esempio, per importare un modulo con il percorso example.com/foo archiviato in Artifact Registry, la sezione di importazione potrebbe essere simile alla seguente:

      
      package main
    
      import (
        foo "example.com/foo"
      )
    
      func main() {
    
        ...
    
      }
    
      
    
  5. Esegui go mod tidy per scaricare le dipendenze:

      go mod tidy
    
  6. Esegui il modulo come di consueto:

      go run .
    

    Il modulo archiviato in Artifact Registry viene scaricato e utilizzato come dipendenza.

Eliminare i moduli Go pacchettizzati

Modalità del repository: standard

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

  • Una volta eliminato un pacchetto, non puoi annullare l'azione.

Prima di eliminare un pacchetto o una versione del pacchetto, verifica di avere che abbia comunicato o gestito eventuali dipendenze importanti.

Per eliminare un pacchetto:

Console

  1. Apri la pagina Repository nella console Google Cloud.

    Apri la pagina Repository

  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]

Dove

  • 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 è un una o più regioni località. Utilizza questo flag per visualizzare i repository in una posizione specifica. Se configurato una località predefinita, puoi omettere questo flag per utilizzare per impostazione predefinita.
  • --async Torna immediatamente senza attendere il completamento dell'operazione in corso.

Per eliminare le versioni di un pacchetto:

Console

  1. Apri la pagina Repository nella console Google Cloud.

    Apri la pagina Repository

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

    La pagina Pacchetti elenca i pacchetti presenti 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]

Dove

  • PACKAGE è il nome del pacchetto nel repository.
  • REPOSITORY è il nome del repository. Se hai configurato default, puoi omettere questo flag per utilizzare il repository predefinito.
  • LOCATION è un una o più regioni località. Utilizza questo flag per visualizzare i repository in una posizione specifica. Se hai configurato una posizione predefinita, puoi omettere questo flag per utilizzare la posizione predefinita.
  • --async restituisce immediatamente il valore, senza attendere il completamento dell'operazione in corso.

Passaggi successivi