Gestire i moduli Go

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

Prima di iniziare

  1. Se il repository di destinazione non esiste, creane uno nuovo. Scegli Vai 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 Go 1.15 o versioni successive.
  5. Installa il componente aggiuntivo gcloud CLI package-go-module:

    gcloud components install package-go-module
  6. Configura Go per l'autenticazione con Artifact Registry.

Ruoli obbligatori

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

Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso.

Potresti anche essere in grado di ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.

Carica un modulo

Modalità repository: standard

Per pacchettizzare un modulo e caricarlo nel tuo repository, esegui questo 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 il tuo ID progetto Google Cloud.
  • REPOSITORY con il nome del repository in cui è archiviato il pacchetto.
  • LOCATION con la località a livello di una o più regioni del repository.
  • MODULE_PATH con il percorso del modulo. Ad esempio: example.com/foo consulta la documentazione di riferimento ai moduli di Go per ulteriori informazioni.
  • VERSION con la versione semantica del modulo nella forma vX.Y.Z, dove X è la versione principale, Y è la versione secondaria e Z è la versione patch.
  • SOURCE_LOCATION con il percorso della directory root del modulo Go. Se ometti il flag --source, il valore predefinito è la directory corrente.

Il modulo viene caricato su Artifact Registry.

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

Carica una nuova versione del modulo

Modalità repository: standard

Per caricare una nuova versione del modulo nel progetto, nel repository e nella località predefiniti quando sono configurati i valori predefiniti, esegui il comando seguente con il nuovo numero di 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 questo 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 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 e trattini ASCII separati da punti. Ad esempio, per caricare la pre-release di un modulo con il percorso example.com/foo modulo identificato da alpha.x.12m.5, esegui questo 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à repository: standard

Le versioni principali non sono compatibili con le versioni precedenti. Per impedire agli utenti di importare una modifica che provoca un errore, le versioni principali dopo il giorno v1 devono avere percorsi dei 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 sarebbe example.com/foo/v2.

La best practice consigliata prevede di sviluppare versioni principali dopo v1 in directory separate, il cui nome è basato sul suffisso della versione principale.

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

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

Elenco moduli

Modalità repository: standard

Esegui questo comando per ispezionare un modulo Go caricato nel progetto, nel repository e nella località predefiniti quando sono configurati i valori predefiniti:

  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à repository: standard

Esegui questo comando per visualizzare le versioni di un modulo nel progetto, nel repository e nella località 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

Utilizza un modulo come dipendenza

Modalità repository: standard

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

  1. Se utilizzi credenziali di breve durata per l'autenticazione su Artifact Registry, dovrai aggiornare il token OAuth eseguendo questo comando:

      GOPROXY=proxy.golang.org \
      go run github.com/GoogleCloudPlatform/artifact-registry-go-tools/cmd/auth@latest refresh
    
  2. Se il modulo non dispone ancora di un file go.mod, passa alla directory della cartella del modulo ed esegui go mod init per creare un file go.mod per il pacchetto.

      go mod init MODULE_PATH
    

    Sostituisci MODULE_PATH con il percorso del modulo archiviato in Artifact Registry. Per ulteriori informazioni, consulta la pagina di riferimento sui moduli di Go.

  3. Per richiedere l'archiviazione della versione del modulo in Artifact Registry, modifica il file go.mod in modo simile a questo:

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

    Sostituisci quanto segue:

    • example.com/foo è il percorso del modulo obbligatorio
    • v0.1.0 è la versione archiviata in Artifact Registry
  4. Includi il percorso del modulo normalmente nella sezione import del tuo 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 normalmente:

      go run .
    

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

Elimina moduli Go in pacchetto

Modalità repository: standard

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

  • L'eliminazione di un pacchetto non può essere annullata.

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 Repositories nella console Google Cloud.

    Apri la pagina Repository

  2. Nell'elenco dei repository, fai clic su quello appropriato.

    Nella pagina Pacchetti sono elencati 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 è una località a livello di una o più regioni. Utilizza questo flag per visualizzare i repository in una località specifica. Se hai configurato una località predefinita, puoi omettere questo flag per utilizzare quella predefinita.
  • --async Torna immediatamente, senza attendere il completamento dell'operazione in corso.

Per eliminare le versioni di un pacchetto:

Console

  1. Apri la pagina Repositories nella console Google Cloud.

    Apri la pagina Repository

  2. Nell'elenco dei repository, fai clic su quello appropriato.

    Nella pagina Pacchetti sono elencati i pacchetti nel repository.

  3. Fai clic su un pacchetto per visualizzare le relative 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 un repository predefinito, puoi omettere questo flag per utilizzare quello predefinito.
  • LOCATION è una località a livello di una o più regioni. Utilizza questo flag per visualizzare i repository in una località specifica. Se hai configurato una località predefinita, puoi omettere questo flag per utilizzare quella predefinita.
  • --async viene restituito immediatamente, senza attendere il completamento dell'operazione in corso.

Passaggi successivi