Questa pagina spiega come utilizzare Cloud Build per creare, testare ed eseguire il deployment di Go diverse applicazioni.
Prima di iniziare
Le istruzioni in questa pagina presuppongono che tu abbia familiarità con Go. Inoltre:
-
Enable the Cloud Build, Cloud Run, and Artifact Registry APIs.
- Per eseguire i comandi
gcloud
in questa pagina, installa Google Cloud CLI. - Tieni a portata di mano il tuo progetto Go.
- Se vuoi eseguire il containerizzazione della tua app Go utilizzando Cloud Build, devi avere un file
Dockerfile
insieme al codice sorgente. - Se vuoi archiviare il container compilato in Artifact Registry, crea un repository Docker in Artifact Registry.
- Se vuoi archiviare i log di test in Cloud Storage, crea un bucket in Cloud Storage.
Autorizzazioni IAM richieste
Per archiviare i log di test in Logging, concedi la classe Creatore oggetti Storage (
roles/storage.objectCreator
) per il bucket Cloud Storage al tuo account di servizio di build.Per archiviare le immagini create in Artifact Registry, concedi il ruolo Writer (
roles/artifactregistry.writer
) di Artifact Registry al tuo account di servizio di compilazione.
Per istruzioni su come concedere questi ruoli, consulta Concedere un ruolo utilizzando la pagina IAM.
Configurazione delle build Go
L'immagine golang
pubblica di Docker Hub supporta la creazione utilizzando i moduli Go. L'utilizzo di questa immagine come passaggio di compilazione nel file di configurazione di Cloud Build ti consente di richiamare i comandi go
all'interno dell'immagine. Gli argomenti passati a questo passaggio di compilazione vengono passati direttamente allo strumento golang
, consentendoti di eseguire qualsiasi comando go
in questa immagine.
Questa sezione illustra un file di configurazione di compilazione di esempio per un'app Go. Ha i passaggi per creare l'app, aggiungere i test delle unità e, una volta superati i test, containerizzare ed eseguire il deployment dell'app.
Per compilare l'applicazione Go:
Nella directory principale del progetto, crea un file di configurazione Cloud Build denominato
cloudbuild.yaml
.Compilazione e test: se hai definito test di unità nella tua applicazione, puoi configurare Cloud Build per eseguirli aggiungendo i seguenti campi in un passaggio di compilazione:
name
: imposta il valore di questo campo sugolang
per utilizzare l'immagine golang da Docker Hub per le tue attività.entrypoint
: imposta il valore di questo campo su/bin/bash
. Questo consente di per eseguire comandi bash multilinea direttamente dal passaggio di creazione.args
: il campoargs
di un passaggio di build accetta un elenco di argomenti e e le passa all'immagine a cui fa riferimento il camponame
. Nel seguente Ad esempio, il campoargs
accetta gli argomenti per:- Esegui il programma di formattazione dei log di test per scaricare l'output del log di test.
- Stampa dell'output del log.
- Salvataggio dei risultati del test in
sponge.log
. - Output dei risultati in
sponge.log
in un file XML JUNIT. Il nome del il file XML JUNIT viene creato usando la versione breve dell'ID di commit associato con la tua build. Un passaggio di build successivo salverà i log di questo file in Cloud Storage.
Containerizza l'app: dopo aver aggiunto il passaggio di build per assicurarti che i test le risorse, puoi creare l'applicazione. Cloud Build fornisce immagine Docker predefinita che puoi utilizzare per containerizzare la tua applicazione Go. Per contengare l'app, aggiungi i seguenti campi in un passaggio di compilazione:
name
: imposta il valore di questo campo sugcr.io/cloud-builders/docker
da utilizzare l'immagine Docker preimpostata per la tua attività.args
: aggiungi gli argomenti per il comandodocker build
come valori per questo elemento .
Il seguente passaggio di build crea l'immagine
myimage
e la tagga con una versione breve dell'ID commit. Il passaggio di compilazione utilizza sostituzione per l'ID progetto, il nome del repository e i valori SHA brevi, pertanto questi valori vengono sostituiti automaticamente in fase di compilazione. Tieni presente che dovrai per creare o avere un repository Docker in Artifact Registry per archiviare l'immagine.Esegui il push del container in Artifact Registry: puoi archiviare il container creato in Artifact Registry, un servizio Google Cloud che puoi utilizzare archiviare, gestire e proteggere gli artefatti delle build. Per farlo, devi avere un repository Docker esistente in Artifact Registry. Per configurare Cloud Build per archiviare l'immagine in un repository Docker di Artifact Registry, aggiungi un passaggio di compilazione con i seguenti campi:
name
: imposta il valore di questo campo sugcr.io/cloud-builders/docker
su utilizza l'immagine del builderdocker
ufficiale per l'attività.args
: aggiungi gli argomenti per il comandodocker push
come valori di questo campo. Per l'URL di destinazione, inserisci il repository Docker di Artifact Registry in cui vuoi archiviare l'immagine.
Il seguente passaggio di creazione esegue il push dell'immagine che hai creato nel passaggio precedente in Artifact Registry:
Esegui il deployment del container in Cloud Run: per eseguire il deployment dell'immagine su Cloud Run, aggiungi un passaggio di build con i seguenti campi:
name
: imposta il valore di questo campo sugoogle/cloud-sdk
per utilizzare gcloud CLI per richiamare il comandogcloud
ed eseguire il deployment dell'immagine su Cloud Run.args
: aggiungi come valori gli argomenti per il comandogcloud run deploy
di questo campo.
Il seguente passaggio di build esegue il deployment dell'immagine creata in precedenza in Cloud Run:
Salva i log di test in Cloud Storage: puoi configurare Cloud Build in modo da archiviare i log di test in Cloud Storage specificando la posizione e il percorso del bucket esistente per i log di test.
Il seguente passaggio di compilazione memorizza i log di test salvati nel file XML JUNIT in un bucket Cloud Storage:
Lo snippet seguente mostra il file di configurazione della build completo per tutti i passaggi descritti sopra:
Avvia la build utilizzando gcloud CLI o trigger di build. Devi specificare il nome del repository Artifact Registry quando avvii la compilazione.
Per specificare il repository Artifact Registry all'avvio della build utilizzando la CLI gcloud:
gcloud builds submit --region=us-west2 --config=cloudbuild.yaml \ --substitutions=_REPO_NAME="REPO_NAME"
Sostituisci
REPO_NAME
con il nome del repository Artifact Registry.Per specificare il repository Artifact Registry durante la creazione con trigger di build, specifica il nome del tuo repository Artifact Registry nel nel campo Variabili di sostituzione. creando il trigger di build.
Passaggi successivi
- Scopri come eseguire deployment blu/verde su Compute Engine.
- Scopri come creare immagini container.
- Scopri come risolvere gli errori di build.