Questa pagina descrive come avviare manualmente una build in Cloud Build utilizzando Google Cloud CLI e l'API Cloud Build.
Prima di iniziare
- Se vuoi utilizzare gli esempi a riga di comando in questa guida, installa Google Cloud CLI.
- Per creare utilizzando la configurazione di compilazione di Cloud Build, crea un file di configurazione di compilazione.
- Per creare usando un
Dockerfile
, tieni a portata di mano il tuoDockerfile
. - Se la build richiede codice sorgente, tienilo a portata di mano.
Autorizzazioni IAM richieste
- Se stai archiviando i log di build nel bucket di log predefinito, sono necessari i ruoli Visualizzatore progetto e Editor Cloud Build per eseguire una build.
- Se stai archiviando i log di build nel bucket di log creato dall'utente, hai bisogno del ruolo Editor di Cloud Build per eseguire una build.
- Se utilizzi pool privati, è necessario il ruolo Utente pool di worker di Cloud Build per eseguire le build.
Per istruzioni sulla concessione dei ruoli IAM, consulta Configurare l'accesso alle risorse Cloud Build.
Esecuzione delle build
Puoi specificare l'origine della build utilizzando il campo Origine build. Il campo Origine build è uno dei seguenti: storage_source
, repo_source
, git_source
e connected_repository
.
Invia build con storage_source
gcloud
Con un Dockerfile:
Dockerfile
contiene tutte le informazioni necessarie per creare un'immagine Docker utilizzando Cloud Build.
Per eseguire una richiesta di build utilizzando Dockerfile
, esegui questo comando
dalla directory contenente il codice dell'applicazione, Dockerfile
ed eventuali
altri asset:
gcloud builds submit --region=us-west2 --tag gcr.io/PROJECT_ID/IMAGE_NAME .
Dove:
- PROJECT_ID è il nome del tuo progetto Google Cloud.
- IMAGE_NAME è l'immagine da creare.
.
specifica che il codice sorgente si trova nella directory di lavoro corrente.
Il nome completo dell'immagine da creare è gcr.ioPROJECT_ID/IMAGE_NAME
. Le immagini sottoposte a push in Container Registry utilizzano il formato del nome del registro.
Il comando gcloud builds submit
:
- comprime il codice dell'applicazione,
Dockerfile
e tutti gli altri asset nella directory corrente, come indicato da.
; - carica i file in un bucket Cloud Storage;
- avvia una build nella posizione
us-west2
utilizzando i file caricati come input; - tagga l'immagine utilizzando il nome fornito
- esegue il push dell'immagine creata in Container Registry.
Man mano che la build procede, l'output viene visualizzato nella shell o nella finestra del terminale. Una volta completata la build, dovresti vedere un output simile al seguente:
DONE
---------------------------------------------------------------------------------
ID CREATE_TIME DURATION STATUS
$BUILD_ID 2023-10-28T15:21:18+00:00 12S SUCCESS
dove $BUILD_ID
è l'identificatore univoco della tua build.
Con il file di configurazione di compilazione di Cloud Build:
Per inviare una build utilizzando la configurazione di compilazione, esegui questo comando:
gcloud builds submit --region=us-west2 --config BUILD_CONFIG SOURCE
Dove:
- BUILD_CONFIG è il percorso del file di configurazione della build.
- SOURCE è il percorso o il codice sorgente dell'URL.
Quando esegui gcloud builds submit
per la prima volta in un progetto Google Cloud,
Cloud Build crea un bucket Cloud Storage denominato [YOUR_PROJECT_NAME]_cloudbuild
in quel progetto. Cloud Build usa questo bucket per archiviare
il codice sorgente che usi per le build. Cloud Build non elimina
automaticamente i contenuti in questo bucket. Per eliminare gli oggetti che non utilizzi più per le build, puoi impostare la configurazione del ciclo di vita nel bucket o eliminare manualmente gli oggetti.
Il seguente comando mostra come inviare una richiesta di build cloudbuild.yaml
utilizzando il codice sorgente archiviato in un bucket Cloud Storage.
gcloud builds submit --region=us-west2 --config cloudbuild.yaml \
gs://BUCKET/SOURCE.tar.gz
Dove:
- BUCKET è il nome del tuo bucket in Cloud Storage contenente il codice sorgente da creare.
- SOURCE è il nome del file di codice sorgente compresso.
Puoi utilizzare .
per specificare che il codice sorgente si trova nella directory di lavoro corrente:
gcloud builds submit --region=us-west2 --config=cloudbuild.yaml .
API
Per inviare la richiesta di build utilizzando curl
:
Crea un file denominato
request.json
con il seguente contenuto:{ "source": { "storageSource": { "bucket": "BUCKET", "object": "SOURCE.tar.gz" } }, "steps": [{ "name": "gcr.io/cloud-builders/docker", "args": [ "build", "-t", "gcr.io/PROJECT_ID/IMAGE_NAME", "." ] }], "images": [ "gcr.io/PROJECT_ID/IMAGE_NAME" ] }
Dove:
- BUCKET è il nome del bucket Cloud Storage che contiene il codice sorgente da creare.
- SOURCE è il nome del file di codice sorgente compresso.
- IMAGE_NAME è il nome dell'immagine da creare.
In questa richiesta di build, Cloud Build chiama il passaggio di build
docker
con gli argomentibuild -t gcr.io/$PROJECT_ID/IMAGE-NAME .
.Il nome completo dell'immagine da creare è
gcr.io/$PROJECT_ID/IMAGE_NAME
.Le immagini sottoposte a push in Container Registry utilizzano il formato del nome del registro.
Esegui questo comando, dove
PROJECT_ID
è il tuo ID progetto Google Cloud eREGION
è una delle regioni supportate:curl -X POST -T request.json -H "Authorization: Bearer $(gcloud config config-helper \ --format='value(credential.access_token)')" \ https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/builds
In questo comando,
curl
inviarequest.json
in una chiamata POST all'endpointbuilds
per il metodo API projects.builds.create.Il comando visualizza i dettagli della build nella shell o nella finestra del terminale. L'output è una risposta JSON e appare simile al seguente:
{ "name": "operations/build/$PROJECT-ID/NmZhZW...", "metadata": { "@type": "type.googleapis.com/google.devtools.cloudbuild.v1.BuildOperationMetadata", "build": { "id": $BUILD-ID, "status": "QUEUED", "source": { "storageSource": { "bucket": "BUCKET", "object": "SOURCE.tar.gz" } }, "createTime": "2017-05-12T18:58:07.341526Z", "steps": [ { "name": "gcr.io/cloud-builders/docker", "args": [ "build", "-t", "gcr.io/PROJECT_ID/IMAGE_NAME", "." ] } ], "timeout": "600s", "images": [ "gcr.io/$PROJECT_ID/IMAGE_NAME" ], "projectId": $PROJECT-ID, "logsBucket": "gs://...", "sourceProvenance": { "resolvedStorageSource": { "bucket": "BUCKET", "object": "SOURCE.tar.gz" "generation": "..." } }, "logUrl": "https://console.cloud.google.com/cloud-build/builds/...?project=$PROJECT_ID" } } }
La risposta JSON viene modellata utilizzando la risorsa
Operation
nell'API Cloud Build. Il campometadata
è modellato utilizzando la risorsaBuild
. Lo statoQUEUED
indica che la build è in attesa di esecuzione.
Invia build con connected_repository
gcloud
Per eseguire una richiesta di build con origine build da una risorsa repository di 2a generazione, esegui questo comando:
gcloud builds submit REPOSITORY --revision=REVISION --config=BUILD_CONFIG --region=us-west2
Dove:
- REPOSITORY è il nome del repository Google Cloud Build di 2a generazione, formattato come
projects/*/locations/*/connections/*repositories/*
. - REVISION è la revisione da recuperare dal repository Git, ad esempio un ramo, un tag, una SHA di commit o qualsiasi riferimento Git.
- BUILD_CONFIG è il percorso del file di configurazione della build.
Man mano che la build procede, l'output viene visualizzato nella shell o nella finestra del terminale. Una volta completata la build, dovresti vedere un output simile al seguente:
DONE
---------------------------------------------------------------------------------
ID CREATE_TIME DURATION STATUS
$BUILD_ID 2023-10-28T15:21:18+00:00 12S SUCCESS
dove $BUILD_ID
è l'identificatore univoco della tua build.
gcloudignore: quando includi il codice sorgente per la build, il comando precedente carica tutti i file nella directory specificata in Google Cloud Platform per crearli. Se vuoi escludere determinati file nella directory, puoi includere un file denominato .gcloudignore
nella directory di caricamento di primo livello; i file specificati verranno ignorati. Se nella directory di caricamento di primo livello non è presente alcun file .gcloudignore
, ma lo è un file .gitignore
, gcloud CLI genererà un file .gcloudignore
compatibile con Git che rispetti i tuoi file .gitignore
-ed. Per saperne di più, consulta la documentazione di gcloudignore
.
Se non disponi di codice sorgente da passare alla build, utilizza il flag --no-source
, dove BUILD_CONFIG è il percorso del file di configurazione della build:
gcloud builds submit --region=us-west2 --config=BUILD_CONFIG --no-source
API
Per inviare la richiesta di build utilizzando curl
:
Crea un file denominato
request.json
con il seguente contenuto:{ "source": { "connectedRepository": { "repository": "REPOSITORY", "revision": "REVISION" } }, "steps": [{ "name": "gcr.io/cloud-builders/docker", "args": [ "build", "-t", "gcr.io/PROJECT_ID/IMAGE_NAME", "." ] }], "images": [ "gcr.io/PROJECT_ID/IMAGE_NAME" ] }
Dove:
- REPOSITORY è il nome del repository Google Cloud Build di 2a generazione, formattato come
projects/*/locations/*/connections/*repositories/*
. - REVISION è la revisione da recuperare dal repository Git, ad esempio un ramo, un tag, una SHA di commit o qualsiasi riferimento Git.
- IMAGE_NAME è il nome dell'immagine da creare.
In questa richiesta di build, Cloud Build chiama il passaggio di build
docker
con gli argomentibuild -t gcr.io/PROJECT_ID/IMAGE_NAME .
.Il nome completo dell'immagine da creare è
gcr.io/PROJECT_ID/IMAGE_NAME
. Le immagini sottoposte a push in Container Registry utilizzano il formato del nome del registro.- REPOSITORY è il nome del repository Google Cloud Build di 2a generazione, formattato come
Esegui questo comando, dove
PROJECT_ID
è il tuo ID progetto Google Cloud e REGION è una delle regioni supportate:curl -X POST -T request.json -H "Authorization: Bearer $(gcloud config config-helper \ --format='value(credential.access_token)')" \ https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/builds
In questo comando,
curl
inviarequest.json
in una chiamata POST all'endpointbuilds
per il metodo API projects.builds.create.Il comando visualizza i dettagli della build nella shell o nella finestra del terminale. L'output è una risposta JSON e appare simile al seguente:
{ "name": "operations/build/$PROJECT-ID/NmZhZW...", "metadata": { "@type": "type.googleapis.com/google.devtools.cloudbuild.v1.BuildOperationMetadata", "build": { "id": $BUILD-ID, "status": "QUEUED", "source": { "connectedRepository": { "repository": "REPOSITORY", "revision": "REVISION" } }, "createTime": "2017-05-12T18:58:07.341526Z", "steps": [ { "name": "gcr.io/cloud-builders/docker", "args": [ "build", "-t", "gcr.io/PROJECT_ID/IMAGE_NAME", "." ] } ], "timeout": "600s", "images": [ "gcr.io/PROJECT_ID/IMAGE_NAME" ], "projectId": PROJECT_ID, "logsBucket": "gs://...", "sourceProvenance": { "resolvedConnectedRepository": { "repository": "REPOSITORY", "revision": "REVISION.tar.gz" "generation": "..." } }, "logUrl": "https://console.cloud.google.com/cloud-build/builds/...?project=PROJECT_ID" } } }
La risposta JSON viene modellata utilizzando la risorsa
Operation
nell'API Cloud Build. Il campometadata
è modellato utilizzando la risorsaBuild
. Lo statoQUEUED
indica che la build è in attesa di esecuzione.
Passaggi successivi
- Scopri come creare attivatori manuali.
- Scopri come visualizzare i risultati della build.
- Scopri come risolvere gli errori di build.