Invia una build tramite interfaccia a riga di comando e API

Questa pagina descrive come avviare manualmente una build in Cloud Build utilizzando Google Cloud CLI e l'API Cloud Build.

Prima di iniziare

  • Per utilizzare gli esempi delle righe di comando presenti in questa guida, installa Google Cloud CLI.
  • Per creare utilizzando la configurazione di compilazione di Cloud Build, crea un file di configurazione della build.
  • Per creare usando un Dockerfile, tieni a portata di mano il tuo Dockerfile.
  • Se la build richiede codice sorgente, tienilo a portata di mano.

Autorizzazioni IAM richieste

Per istruzioni sulla concessione dei ruoli IAM, consulta Configura 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 la 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 nel terminale. finestra. Una volta completata la build, dovresti vedere un output simile seguenti:

    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 utilizza questo bucket per archiviare qualsiasi origine il codice che potresti usare per le tue build. Cloud Build non esegue automaticamente in questo bucket. Per eliminare gli oggetti che non utilizzi più puoi impostare la configurazione del ciclo di vita sul bucket oppure eliminali manualmente.

Il comando seguente 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 è nello stato attuale directory:

    gcloud builds submit --region=us-west2 --config=cloudbuild.yaml .

API

Per inviare la richiesta di build utilizzando curl:

  1. 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 argomenti build -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.

  2. Esegui questo comando dove PROJECT_ID è il tuo ID progetto Google Cloud e REGION è uno dei 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 invia request.json in una chiamata POST al server builds endpoint per projects.builds.create API.

    Il comando visualizza i dettagli della build nella shell o nel terminale finestra. L'output è una risposta JSON e appare simile al seguenti:

        {
            "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 Operation nell'API Cloud Build. Il campo metadata è modellato utilizzando Build risorsa. Lo stato QUEUED indica che la build è in attesa dell'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 nel terminale. finestra. Una volta completata la build, dovresti vedere un output simile seguenti:

    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 codice riportato sopra carica tutti i file nella directory specificata in Google Cloud Piattaforma da creare. Se vuoi escludere determinati file presenti nella directory, può includere un file denominato .gcloudignore nella directory di caricamento di primo livello; i file specificati verranno ignorati. Se non è presente alcun file .gcloudignore presente nella directory di caricamento di primo livello, mentre un file .gitignore è, gcloud CLI genererà un file .gcloudignore compatibile con Git che rispetta i tuoi file .gitignore-ed. Per ulteriori informazioni, consulta Documentazione di gcloudignore.

Se non disponi del codice sorgente da passare alla build, utilizza --no-source flag dove BUILD_CONFIG è il percorso della configurazione della build file:

    gcloud builds submit --region=us-west2 --config=BUILD_CONFIG --no-source

API

Per inviare la richiesta di build utilizzando curl:

  1. 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 argomenti build -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.

  2. Esegui questo comando dove PROJECT_ID è il tuo ID progetto Google Cloud e REGION è uno dei 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 invia request.json in una chiamata POST al server builds endpoint per projects.builds.create API.

    Il comando visualizza i dettagli della build nella shell o nel terminale finestra. L'output è una risposta JSON e appare simile al seguenti:

        {
            "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 Operation nell'API Cloud Build. Il campo metadata è modellato utilizzando Build risorsa. Lo stato QUEUED indica che la build è in attesa dell'esecuzione.

Passaggi successivi