Invia una build locale tramite interfaccia a riga di comando e API

In questa pagina viene descritto come avviare manualmente una build in Cloud Build usando l'interfaccia a riga di comando di Google Cloud 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 usando la configurazione di Cloud Build, build utilizzando un file di configurazione della build.
  • Per procedere con la creazione utilizzando Dockerfile, tieni a portata di mano Dockerfile.
  • Se la tua build richiede codice sorgente, tienilo a portata di mano.

Autorizzazioni IAM richieste

Per istruzioni sulla concessione dei ruoli IAM, consulta Configurare l'accesso alle risorse Cloud Build.

Esecuzione delle build

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 il comando seguente 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 Cloud.
  • image-name è l'immagine da creare.
  • . specifica che il codice sorgente si trova nella directory di lavoro attuale.

Il nome completo dell'immagine da creare è "gcr.io/project-id/image-name. Le immagini sottoposte a push a Container Registry utilizzano il formato del nome del Registro di sistema.

Il comando gcloud builds submit:

  • comprime il codice dell'applicazione, Dockerfile ed eventuali altri asset nella directory corrente come indicato da .;
  • Carica i file in un bucket Cloud Storage.
  • avvia una build nella località 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 progredisce, 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                             2016-10-28T15:21:18+00:00  12S      SUCCESS

dove $BUILD_ID è l'identificatore univoco della build.

Utilizzo del file di configurazione della build Cloud Build:

Per inviare una build utilizzando la configurazione build, esegui il comando seguente:

    gcloud builds submit --region=us-west2 --config build-config source-code

dove:

  • build-config è il percorso del file di configurazione della build.
  • source-code è il percorso o il codice sorgente dell'URL.

Quando esegui gcloud builds submit per la prima volta in un progetto 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 da utilizzare per le tue build. Cloud Build non elimina automaticamente i contenuti in questo bucket. Per eliminare gli oggetti che non utilizzi più per le build, puoi configurare la configurazione del ciclo di vita nel bucket o eliminare manualmente gli oggetti.

Il comando seguente invia la richiesta di build cloudbuild.yaml utilizzando il codice sorgente archiviato archiviato in un bucket Cloud Storage.

    gcloud builds submit --region=us-west2 --config cloudbuild.yaml \
        gs://cloud-build-examples/node-docker-example.tar.gz

Puoi utilizzare . per specificare che il codice sorgente si trova nella directory di lavoro attuale:

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

gcloudignore: quando includi il codice sorgente per la build, il comando precedente carica tutti i file nella directory specificata su Google Cloud Platform per creare. 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 nessun file .gcloudignore è presente nella directory di caricamento di primo livello, ma un file .gitignore lo è, l'interfaccia a riga di comando gcloud genererà un file .gcloudignore compatibile con Git che rispetta i tuoi file .gitignore-ed. Per ulteriori informazioni, consulta la documentazione di gcloudignore.

Se non disponi del 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

Server

Per inviare la richiesta di build utilizzando curl:

  1. Crea un file denominato request.json con il seguente contenuto:

    {
        "source": {
            "storageSource": {
                "bucket": "cloud-build-examples",
                "object": "node-docker-example.tar.gz"
            }
        },
        "steps": [{
            "name": "gcr.io/cloud-builders/docker",
            "args": [
                "build",
                "-t",
                "gcr.io/$PROJECT_ID/my-image",
                "."
            ]
        }],
        "images": [
            "gcr.io/$PROJECT_ID/my-image"
        ]
    }
    

    In questa richiesta di build, Cloud Build chiama il passaggio di build docker con gli argomenti build -t gcr.io/$PROJECT_ID/cb-demo-img ..

    Il nome completo dell'immagine da creare è gcr.io/$PROJECT_ID/cb-demo-img. Le immagini sottoposte a push a Container Registry utilizzano il formato del nome del Registro di sistema.

    L'origine del codice per la build è in un archivio tar compresso, node-docker-example.tar.gz. Il file è archiviato in un bucket Cloud Storage denominato cloud-build-examples.

  2. Esegui questo comando, dove project-id è l'ID del tuo progetto 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 invia request.json in una chiamata POST all'endpoint builds per il metodo API projects.builds.create.

    Il comando visualizza i dettagli sulla build nella finestra della shell o del terminale. L'output è una risposta JSON e sembra 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": "cloud-build-examples",
                        "object": "node-docker-example.tar.gz"
                    }
                },
                "createTime": "2017-05-12T18:58:07.341526Z",
                "steps": [
                {
                    "name": "gcr.io/cloud-builders/docker",
                    "args": [
                        "build",
                        "-t",
                        "gcr.io/$PROJECT-ID/cb-demo-img",
                        "."
                    ]
                }
                ],
                "timeout": "600s",
                "images": [
                    "gcr.io/$PROJECT-ID/cb-demo-img"
                ],
                "projectId": $PROJECT-ID,
                "logsBucket": "gs://...",
                "sourceProvenance": {
                    "resolvedStorageSource": {
                        "bucket": "cloud-build-examples",
                        "object": "node-docker-example.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 campo metadata viene modellato utilizzando la risorsa Build. Lo stato QUEUED indica che la build è in attesa di esecuzione.

Passaggi successivi