Questa pagina descrive come avviare manualmente una build in Cloud Build utilizzando Google Cloud CLI e l'API Cloud Build.
Prima di iniziare
- Per eseguire la compilazione utilizzando la configurazione della build di Cloud Build, crea un file di configurazione della build.
- Tieni a portata di mano il codice sorgente dell'applicazione e
Dockerfile
. - Avere un repository Docker per archiviare le immagini in Artifact Registry o creare un repository.
Autorizzazioni IAM richieste
Per ottenere le autorizzazioni necessarie per inviare le build, chiedi all'amministratore di concederti i seguenti ruoli IAM nel tuo account di servizio:
-
Archivia i log di compilazione nel bucket dei log predefinito:
Editor di Cloud Build (
roles/cloudbuild.builds.editor
) -
Archivia i log di compilazione nel bucket dei log creato dall'utente:
Editor di Cloud Build (
roles/cloudbuild.builds.editor
) -
Utilizza pool privati:
Cloud Build WorkerPool User (
roles/cloudbuild.workerPoolUser
)
Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.
Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.
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 il build utilizzando un Dockerfile
, esegui il seguente comando dalla directory contenente il codice sorgente e il Dockerfile
:
gcloud builds submit --tag LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE_NAME
Dove:
- LOCATION: la posizione regionale o multiregionale del repository Docker in Artifact Registry.
- PROJECT_ID: il tuo ID progetto Google Cloud .
- REPOSITORY: il nome del repository Artifact Registry.
- IMAGE_NAME: il nome dell'immagine del contenitore da compilare.
Il nome completo dell'immagine da creare è
LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE_NAME
.
Le immagini sottoposte a push ad Artifact Registry utilizzano la
convenzione di denominazione di Artifact Registry.
Il comando gcloud builds submit
:
- comprime il codice dell'applicazione,
Dockerfile
, e tutti gli altri asset nella directory corrente come indicato da.
. - avvia una compilazione nella posizione
LOCATION
utilizzando i file caricati come input. - etiqueta l'immagine utilizzando il nome fornito.
- esegue il push dell'immagine compilata in Artifact Registry.
Man mano che la compilazione procede, l'output viene visualizzato nella finestra della shell o del terminale. Al termine della compilazione, 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 build.
Utilizzo del file di configurazione della build di Cloud Build:
Per inviare una build utilizzando la configurazione di compilazione, esegui il seguente comando:
gcloud builds submit --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 --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 --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", "LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE_NAME", "." ] }], "images": [ "LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/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.
- LOCATION: la posizione regionale o multiregionale del repository Docker in Artifact Registry.
- PROJECT_ID: il tuo ID progetto Google Cloud .
- REPOSITORY: il nome del repository Docker in Artifact Registry.
In questa richiesta di compilazione, Cloud Build chiama il
docker
passaggio di compilazione con gli argomentibuild -t LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY .
.Il nome completo dell'immagine da creare è
LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY
.Le immagini sottoposte a push ad Artifact Registry utilizzano la convenzione di denominazione di Artifact 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", "LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE_NAME", "." ] } ], "timeout": "600s", "images": [ "LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/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 LOCATION
Dove:
- LOCATION è la posizione regionale o multiregionale del tuo repository Docker in Artifact Registry.
- REPOSITORY è il nome del repository 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 precedente carica tutti i file nella directory specificata nella compilazione Google Cloud. 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 .gcloudignore
non è presente nella directory di caricamento di primo livello, ma è presente un file .gitignore
, la gcloud CLI genera un file .gcloudignore
compatibile con Git che rispetta i file .gitignore
modificati. Per saperne di più, 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 --config CONFIG_FILE_PATH SOURCE_DIRECTORY
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", "LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE_NAME", "." ] }], "images": [ "LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE_NAME" ] }
Dove:
- REPOSITORY è il nome del repository 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.
- LOCATION: la posizione regionale o multiregionale del repository Docker in Artifact Registry.
- PROJECT_ID: il tuo ID progetto Google Cloud .
In questa richiesta di compilazione, Cloud Build chiama il
docker
passaggio di compilazione con gli argomentibuild -t LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE_NAME .
.Il nome completo dell'immagine da creare è
LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE_NAME
. Le immagini sottoposte a push ad Artifact Registry utilizzano la convenzione di denominazione di Artifact Registry.- REPOSITORY è il nome del repository 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", "LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE_NAME", "." ] } ], "timeout": "600s", "images": [ "LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/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.