Archiviare i moduli Go in Artifact Registry
Configura un repository Artifact Registry Go privato, carica un modulo e utilizzare il modulo come dipendenza.
Prima di iniziare
-
Accedi al tuo Account Google.
Se non ne hai già uno, crea un nuovo account.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.
-
Attiva l'API Artifact Registry.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.
-
Attiva l'API Artifact Registry.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
- Installa Go 1.15 o versioni successive.
- Installa il componente aggiuntivo gcloud CLI
package-go-module
:
gcloud components install package-go-module
Crea un repository
Per creare e configurare un nuovo repository:
Esegui questo comando per creare un nuovo repository.
gcloud artifacts repositories create REPOSITORY \ --repository-format=go \ --location=LOCATION \ --description=DESCRIPTION
Sostituisci quanto segue:
- REPOSITORY è il nome del repository. Per ogni posizione del repository in un progetto, i nomi dei repository devono essere univoci.
- LOCATION indica una o più regioni
località
per il repository. Puoi omettere questo flag se imposti una
predefinita.
Per visualizzare un elenco delle località supportate, esegui il comando
gcloud artifacts locations list
. - DESCRIPTION è una descrizione facoltativa del repository. Azioni sconsigliate includere dati sensibili, poiché le descrizioni dei repository non sono criptate.
Esegui questo comando per visualizzare i dettagli del repository.
gcloud artifacts repositories describe --location=LOCATION REPOSITORY
L'output è simile al seguente:
Encryption: Google-managed key Repository Size: 0.000MB createTime: '2022-06-03T20:20:01.644813Z' format: GO mode: STANDARD_REPOSITORY name: projects/my-project/locations/us-west1/repositories/my-repo updateTime: '2022-06-03T20:20:01.644813Z'
Imposta i valori predefiniti per i comandi gcloud
Per semplificare i comandi gcloud CLI
, puoi:
configurazione dei valori predefiniti
per i valori di progetto, repository e località. Dopo aver configurato i valori predefiniti,
I tag --project
, --location
e --repository
non sono necessari.
Crea un pacchetto e carica un modulo Go
Il componente aggiuntivo gcloud CLI di package-go-module
pacchettizza i tuoi moduli Go,
consentendoti di eseguire la versione e il caricamento su Artifact Registry utilizzando il gcloud
.
Crea un modulo Go
Per prima cosa, crea un semplice modulo Go da caricare nel tuo repository.
Nella directory home, crea una directory denominata "foo" per il tuo modulo
mkdir foo
Cambia directory nella directory del modulo ed esegui
go mod init
per creare un file go.mod per il modulo.cd foo \ go mod init example.com/foo
Sostituisci
example.com/foo
con il percorso del modulo. Consulta le Riferimento ai moduli Go per ulteriori informazioni.Crea un file
foo.go
nella directory foo con il seguente contenuto:package foo const HelloWorld = "Hello World!"
Pacchettizzare e caricare il modulo
Pacchettizza e carica il modulo nel tuo repository:
gcloud artifacts go upload --project=PROJECT \ --repository=REPOSITORY \ --location=LOCATION \ --module-path=example.com/foo \ --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.
example.com/foo
con il percorso del modulo. Consulta le Riferimento ai moduli Go per ulteriori informazioni.- VERSION con
versione semantica
del modulo nel formato
vX.Y.Z
, doveX
è la versione principale,Y
è la eZ
è 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.
Elenco moduli
Esegui questo comando per ispezionare il modulo Go caricato progetto, repository e località quando sono configurati i valori predefiniti:
gcloud artifacts packages list
L'output è 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
Esegui questo comando per visualizzare le versioni del modulo nel valore predefinito progetto, repository e località i valori predefiniti sono configurati:
gcloud artifacts versions list --package=MODULE_PATH
L'output è 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
Scarica moduli
Per importare i moduli archiviati in Artifact Registry, devi indicare Vai a cerca le dipendenze di Artifact Registry e ignora database dei checksum.
configura l'ambiente Go
Indica a Go per scaricare i moduli da Artifact Registry, il programma pubblico Go modulo proxy e quindi l'origine in questo ordine:
export GOPROXY=https://LOCATION-go.pkg.dev/PROJECT/REPOSITORY,https://proxy.golang.org,direct
Sostituisci quanto segue:
- LOCATION indica una o più regioni località del repository.
- PROJECT è il tuo account Google Cloud ID progetto.
- REPOSITORY è il nome del repository in cui quando viene archiviato un pacchetto.
Escludi il modulo dal controllo utilizzando il database di checksum pubblico:
export GONOSUMDB=MODULE_PATH_REGEX
Sostituisci MODULE_PATH_REGEX con il percorso del modulo o un'espressione regolare se vuoi escludere più moduli.
Per escludere il modulo
example.com/foo
dai controlli pubblici database di checksum, esegui questo comando:export GONOSUMDB=example.com/foo
Se vuoi che tutti i moduli con percorsi dei moduli che iniziano con
example.com
siano esclusi dalla verifica mediante il database di checksum pubblico, esegui seguente comando:export GONOSUMDB=example.com/*
Autenticazione in Artifact Registry
Durante il download di moduli Go pacchettizzati da utilizzare come dipendenze Artifact Registry, il programma binario Go utilizza le credenziali del file netrc per l'autenticazione in Artifact Registry. Per semplificare l'autenticazione, puoi utilizzare l'assistente per le credenziali Go per aggiornare i token netrc per l'autenticazione in Artifact Registry.
La posizione del file netrc può essere impostata con la variabile di ambiente netrc.
Se la variabile NETRC
non è impostata, il comando go
leggerà
$HOME/.netrc
su piattaforme simili a UNIX o %USERPROFILE%\_netrc
su Windows.
Artifact Registry supporta i seguenti metodi di autenticazione.
- Credenziali di breve durata (consigliato)
- Utilizzare lo strumento di supporto delle credenziali Go di Artifact Registry per aggiornare i token di autenticazione nel file netrc.
- Usa una chiave dell'account di servizio
Utilizza questa opzione quando non puoi utilizzare le credenziali nel tuo ambiente per autenticazione. Aggiungi la chiave non criptata dell'account di servizio al file netrc.
Aggiungi l'assistente per le credenziali Go a GONOPROXY
Prima di utilizzare l'assistente per le credenziali di Go, devi aggiungerlo all'elenco GONOPROXY
per forzare Go a scaricarlo direttamente da GitHub. Se sono presenti altri moduli
Se vuoi scaricarli direttamente dall'origine, puoi aggiungerli separati da una virgola
come mostrato nell'esempio seguente:
export GONOPROXY=MODULE_PATH1, MODULE_PATH2
Dove MODULE_PATH1 e MODULE_PATH2 sono percorsi dei moduli da scaricare dall'origine.
Per aggiungere l'assistente per le credenziali Go al tuo elenco GONOPROXY
ed eseguirlo per configurare la tua
credenziali:
Aggiungi l'assistente per le credenziali Go a
GONOPROXY
export GONOPROXY=github.com/GoogleCloudPlatform/artifact-registry-go-tools
Esegui questo comando per aggiungere le tue credenziali Artifact Registry al tuo netrc con lo strumento del pacchetto del modulo Go:
GOPROXY=proxy.golang.org \ go run github.com/GoogleCloudPlatform/artifact-registry-go-tools/cmd/auth@v0.1.0 \ add-locations --locations=LOCATION \ [--json_key=path/to/service/account/key.json]
Dove LOCATION indica una o più regioni località del tuo repository. Per aggiungere più località, inseriscile come virgole elenco separato.
L'assistente per le credenziali di Go aggiunge impostazioni al tuo file netrc per l'autenticazione in Artifact Registry. Se passi il flag
--json_key
a cui la chiave viene aggiunta il file netrc per l'autenticazione della password.
Utilizza il modulo come dipendenza
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@v0.1.0 refresh
Nella tua directory home, crea una directory denominata "bar"
mkdir bar
Cambia directory nella directory del modulo ed esegui
go mod init
per creare un filego.mod
per il pacchetto.cd bar \ go mod init example.com/bar
Sostituisci
example.com/bar
con il percorso del modulo. Consulta le Riferimento ai moduli Go per ulteriori informazioni.Per richiedere la versione di foo archiviata in Artifact Registry, modifica il tuo
go.mod
file 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 richiestov0.1.0
è la versione archiviata in Artifact Registry
Crea un file
main.go
nella directorybar
con quanto segue contenuti:package main import ( "fmt" foo "example.com/foo" ) func main() { fmt.Println(foo.HelloWorld) }
Esegui go mod tidy per scaricare le dipendenze, incluso il pacchetto foo:
go mod tidy
Esegui il modulo a barre:
go run .
L'output è simile al seguente:
Hello World!
Esegui la pulizia
Per evitare che al tuo account Google Cloud vengano addebitati costi per le risorse utilizzate in questa pagina, segui questi passaggi.
Per evitare che al tuo account Google Cloud vengano addebitati costi relativi alle risorse utilizzati in questa pagina, procedi nel seguente modo. Prima di rimuovere il repository, assicurati in modo che tutti i moduli che vuoi conservare siano disponibili in un'altra posizione.
Per eliminare il repository:
gcloud artifacts repositories delete \ --location=LOCATION \ --project=PROJECT \ REPOSITORY
Sostituisci quanto segue:
- LOCATION con una o più regioni località del repository.
- PROJECT con Google Cloud ID progetto.
- REPOSITORY con il nome del repository.
Se vuoi rimuovere il repository predefinito e le impostazioni di geolocalizzazione per la configurazione gcloud attiva, esegui questi comandi:
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 moduli Go.
- Leggi le nostre risorse su DevOps ed esplora le Programma di ricerca DevOps Research and Assessment.