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 di riga di comando in questa guida, installa Google Cloud CLI.
- Per eseguire la compilazione utilizzando la configurazione della build di Cloud Build, crea un file di configurazione della build.
- Per eseguire la compilazione utilizzando un
Dockerfile
, tieni pronto ilDockerfile
. - Se la compilazione richiede il codice sorgente, tienilo pronto.
Autorizzazioni IAM richieste
- Se archivi i log di compilazione nel bucket di log predefinito, è necessario il ruolo Visualizzatore progetto e il ruolo Editor build Cloud per eseguire una compilazione.
- Se archivi i log di compilazione nel bucket dei log creato dall'utente, devi disporre del ruolo Editor di Cloud Build per eseguire una compilazione.
- Se utilizzi pool privati, devi disporre del ruolo Utente pool di worker Cloud Build per eseguire le tue build.
Per istruzioni su come concedere i 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
.
Inviare build con storage_source
gcloud
Utilizzando un Dockerfile:
Il file Dockerfile
contiene tutte le informazioni necessarie per creare un'immagine Docker
utilizzando Cloud Build.
Per eseguire una richiesta di compilazione utilizzando Dockerfile
, esegui il seguente comando dalla directory contenente il codice dell'applicazione, Dockerfile
e gli 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 registry.
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 compilazione nella posizione
us-west2
utilizzando i file caricati come input. - esegue il tagging dell'immagine utilizzando il nome fornito
- esegue il push dell'immagine creata in Container Registry.
Man mano che la compilazione procede, l'output viene visualizzato nella finestra della shell o del terminale. Al termine della compilazione, dovresti visualizzare 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 build.
Utilizzo del file di configurazione della build di Cloud Build:
Per inviare una build utilizzando la configurazione di build, esegui il seguente comando:
gcloud builds submit --region=us-west2 --config BUILD_CONFIG SOURCE
Dove:
- BUILD_CONFIG è il percorso del file di configurazione della build.
- SOURCE è il codice sorgente del percorso o 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 utilizza questo bucket per archiviare qualsiasi codice
sorgente che potresti utilizzare per le tue build. Cloud Build non elimina automaticamente i contenuti di questo bucket. Per eliminare gli oggetti che non utilizzi più per le compilazioni, puoi configurare il ciclo di vita nel bucket o eliminare manualmente gli oggetti.
Il seguente comando mostra come inviare una richiesta di compilazione 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 bucket in Cloud Storage contenente il codice sorgente da compilare.
- SOURCE è il nome del file del 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 compilazione utilizzando curl
:
Crea un file denominato
request.json
con i seguenti contenuti:{ "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 contenente il codice sorgente da compilare.
- SOURCE è il nome del file del codice sorgente compresso.
- IMAGE_NAME è il nome dell'immagine da compilare.
In questa richiesta di compilazione, Cloud Build chiama il
docker
passaggio di compilazione 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 registry.
Esegui il seguente comando, dove
PROJECT_ID
è il tuo ID progettoGoogle 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 dell'API projects.builds.create.Il comando mostra i dettagli sulla compilazione nella finestra della shell o del terminale. L'output è una risposta JSON e ha il seguente aspetto:
{ "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 è modellata utilizzando la risorsa
Operation
nell'API Cloud Build. Il campometadata
viene modellato utilizzando la risorsaBuild
. Lo statoQUEUED
indica che la compilazione è in attesa di esecuzione.
Inviare build con connected_repository
gcloud
Per eseguire una richiesta di compilazione con l'origine della compilazione da una risorsa del repository di 2ª generazione, esegui il seguente comando:
gcloud builds submit REPOSITORY --revision=REVISION --config=BUILD_CONFIG --region=us-west2
Dove:
- REPOSITORY è il nome del repository di Google Cloud Build 2ª gen., formattato come
projects/*/locations/*/connections/*repositories/*
. - REVISION è la revisione da recuperare dal repository Git, ad esempio un branch, un tag, un commit SHA o qualsiasi riferimento Git.
- BUILD_CONFIG è il percorso del file di configurazione della build.
Man mano che la compilazione procede, l'output viene visualizzato nella finestra della shell o del terminale. Al termine della compilazione, dovresti visualizzare 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 build.
gcloudignore: quando includi il codice sorgente per la compilazione, il comando riportato sopra carica tutti i file nella directory specificata nella piattaforma Google Cloud per la compilazione. Se vuoi escludere determinati file dalla 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 è presente un file .gitignore
, la gcloud CLI genererà un file .gcloudignore
compatibile con Git che rispetta i file .gitignore
. Per ulteriori informazioni, consulta la documentazione di gcloudignore
.
Se non hai 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 compilazione utilizzando curl
:
Crea un file denominato
request.json
con i seguenti contenuti:{ "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 di Google Cloud Build 2ª gen., formattato come
projects/*/locations/*/connections/*repositories/*
. - REVISION è la revisione da recuperare dal repository Git, ad esempio un branch, un tag, un commit SHA o qualsiasi riferimento Git.
- IMAGE_NAME è il nome dell'immagine da compilare.
In questa richiesta di compilazione, Cloud Build chiama il
docker
passaggio di compilazione 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 registry.- REPOSITORY è il nome del repository di Google Cloud Build 2ª gen., formattato come
Esegui il seguente comando, dove
PROJECT_ID
è il tuo ID progettoGoogle 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 dell'API projects.builds.create.Il comando mostra i dettagli sulla compilazione nella finestra della shell o del terminale. L'output è una risposta JSON e ha il seguente aspetto:
{ "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 è modellata utilizzando la risorsa
Operation
nell'API Cloud Build. Il campometadata
viene modellato utilizzando la risorsaBuild
. Lo statoQUEUED
indica che la compilazione è in attesa di esecuzione.
Passaggi successivi
- Scopri come creare trigger manuali.
- Scopri come visualizzare i risultati della build.
- Scopri come risolvere gli errori di compilazione.