Crea un file di configurazione di compilazione

In questa pagina viene descritto come creare un file di configurazione di compilazione che puoi per avviare una build su Cloud Build.

Un file di configurazione di compilazione definisce i campi necessari per consentire a Cloud Build di eseguire le tue attività. È necessario un file di configurazione della build se stai avviando build usando la gcloud riga di comando strumento o build trigger. Puoi scrivere del file di configurazione di compilazione usando la sintassi YAML o JSON.

Prima di iniziare

Leggi la Panoramica della configurazione di compilazione per conoscere i campi che puoi includere in un file di configurazione della build.

Creazione di una configurazione di compilazione

I passaggi riportati di seguito spiegano come creare un file di configurazione della build di base. Ogni uno dei campi nel file di configurazione della compilazione definisce una parte dell'attività che vuoi eseguire. L'unico campo obbligatorio nel file di configurazione di compilazione è il campo name per un passaggio. Tutti gli altri campi sono facoltativi.

YAML

  1. Crea il file di configurazione della build. Nella directory root del progetto, crea un file denominato cloudbuild.yaml. Questo è il file di configurazione di Cloud Build.

  2. Aggiungi il campo Passaggi. La sezione steps nel file di configurazione della build contiene i passaggi di compilazione che vuoi che Cloud Build esegua.

    steps:
    
  3. Aggiungi il primo passaggio. Sotto steps:, aggiungi un campo name e puntalo a un'immagine container per eseguire l'attività. Cloud Build e le sue la community degli sviluppatori fornisce diverse immagini container con strumenti comuni e lingue installate. Puoi usare una qualsiasi di queste immagini (anche chiamati Cloud Builder) o qualsiasi immagine disponibile pubblicamente in una build passaggio. Per informazioni sui diversi tipi di immagini container che puoi utilizzare in un passaggio di compilazione, consulta Cloud Builders.

    Il seguente snippet mostra un passaggio di build con un builder docker gcr.io/cloud-builders/docker, che è un'immagine container in esecuzione Docker.

    steps:
    - name: 'gcr.io/cloud-builders/docker'
    
  4. Aggiungi gli argomenti del passaggio. Il campo args di un passaggio prende un elenco di argomenti e li passa al generatore a cui fa riferimento il campo name. Se il generatore nel campo name ha un punto di contatto, args nell'elenco viene utilizzato per accedere a questo punto di contatto. Se il builder nel campo name non dispone di , il primo elemento di args viene utilizzato come punto di ingresso.

    Nell'esempio seguente:

    • build è il punto di accesso a Docker Cloud Builder.
    • -t è il tag Docker.
    • us-central1-docker.pkg.dev/${PROJECT_ID}/my-docker-repo/my-image è il nome dell'immagine da compilare in Artifact Registry. Il passaggio di compilazione utilizza la sostituzione predefinita per l'ID progetto, pertanto questo valore viene sostituito automaticamente in fase di compilazione.
    • . è la posizione del codice sorgente, che indica l'origine si trova nella directory di lavoro attuale.

      steps:
      - name: 'gcr.io/cloud-builders/docker'
        args: ['build', '-t', 'us-central1-docker.pkg.dev/${PROJECT_ID}/my-docker-repo/my-image', '.']
      
  5. Aggiungi altri passaggi. Puoi aggiungere qualsiasi numero di passaggi di build alla tua build di configurazione includendo altri campi name e indirizzandoli a cloud costruttori.

    Il seguente snippet include altri due passaggi per la configurazione della build file:

    • un passaggio di build Docker per richiamare il comando docker push ed eseguire il push nel passaggio precedente per creare Artifact Registry.
    • un passaggio di build per il comando Google Cloud SDK con gcloud del punto di ingresso specificato, che crea un'istanza Compute Engine dall'immagine container in Artifact Registry. Il campo env per specificare la zona Compute Engine e regione.

       - name: 'gcr.io/cloud-builders/docker'
         args: ['push', 'us-central1-docker.pkg.dev/${PROJECT_ID}/my-docker-repo/my-image']
       - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk'
         entrypoint: 'gcloud'
         args: ['compute', 'instances', 'create-with-container', 'my-vm-name', '--container-image', 'us-central1-docker.pkg.dev/${PROJECT_ID}/my-docker-repo/my-image']
         env:
         - 'CLOUDSDK_COMPUTE_REGION=us-central1'
         - 'CLOUDSDK_COMPUTE_ZONE=us-central1-a'
      
  6. Includi campi di configurazione di compilazione aggiuntivi. Puoi configurare ulteriormente la compilazione includendo campi come machineType, tags o timeout. Per l'elenco completo dei campi che puoi includere nel file di configurazione della compilazione, consulta Panoramica della configurazione di compilazione.

    Nell'esempio seguente, il passaggio di compilazione gcr.io/google.com/cloudsdktool/cloud-sdk scade dopo 240 secondi.

      - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk'
        entrypoint: 'gcloud'
        timeout: 240s
        args: ['compute', 'instances', 'create-with-container', 'my-vm-name', '--container-image', 'us-central1-docker.pkg.dev/${PROJECT_ID}/my-docker-repo/my-image']
        env:
        - 'CLOUDSDK_COMPUTE_REGION=us-central1'
        - 'CLOUDSDK_COMPUTE_ZONE=us-central1-a'
    

    Vedi lo snippet seguente per l'esempio completo di una build di base di configurazione:

    steps:
      # Docker Build
      - name: 'gcr.io/cloud-builders/docker'
        args: ['build', '-t', 
               'us-central1-docker.pkg.dev/${PROJECT_ID}/my-docker-repo/myimage', 
               '.']
    
      # Docker Push
      - name: 'gcr.io/cloud-builders/docker'
        args: ['push', 
               'us-central1-docker.pkg.dev/${PROJECT_ID}/my-docker-repo/myimage']
    
      # Entrypoint, timeout and environment variables
      - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk'
        entrypoint: 'gcloud'
        timeout: 240s
        args: ['compute', 'instances', 
               'create-with-container', 'my-vm-name',
               '--container-image', 
               'us-central1-docker.pkg.dev/${PROJECT_ID}/my-docker-repo/myimage']
        env:
          - 'CLOUDSDK_COMPUTE_REGION=us-central1'
          - 'CLOUDSDK_COMPUTE_ZONE=us-central1-a'

    Nell'esempio, le immagini container sono archiviate in Artifact Registry. Se la compilazione produce artefatti non contenitore, puoi archiviarli in Cloud Storage utilizzando il campo artifacts. Per istruzioni su come eseguire questa operazione, consulta Archiviazione di immagini e elementi.

JSON

  1. Crea il file di configurazione della build. Nella directory principale del progetto, crea un file denominato cloudbuild.json. Questo è il file di configurazione di Cloud Build.

  2. Aggiungi il campo Passaggi. La sezione steps nel file di configurazione della build contiene i passaggi di compilazione che vuoi che Cloud Build esegua.

    {
       "steps":
    }
    
  3. Aggiungi il primo passaggio. Sotto steps:, aggiungi un campo name e puntalo a un'immagine container per eseguire l'attività. Cloud Build e la sua community di sviluppatori forniscono diverse immagini container con strumenti e linguaggi comuni installati. Puoi utilizzare una di queste immagini (chiamate anche Cloud Builder) o qualsiasi immagine disponibile pubblicamente in un passaggio di compilazione. Per informazioni sui diversi tipi di immagini container che puoi utilizzare in un passaggio di compilazione, consulta Cloud Builders.

    Lo snippet seguente mostra un passaggio di compilazione con un docker builder gcr.io/cloud-builders/docker, ovvero un'immagine container che esegue Docker.

    {
       "steps": [
          {
             "name": "gcr.io/cloud-builders/docker"
          }
       ]
    }
    
  4. Aggiungi gli argomenti del passaggio. Il campo args di un passaggio prende un elenco di argomenti e li passa al generatore a cui fa riferimento il campo name. Se il generatore nel campo name ha un punto di contatto, args nell'elenco viene utilizzato per accedere a questo punto di contatto. Se il builder nel campo name non dispone di , il primo elemento di args viene utilizzato come punto di ingresso.

    Nell'esempio seguente:

    • build è il punto di accesso a Docker Cloud Builder.
    • -t è il tag Docker.
    • us-central1-docker.pkg.dev/${PROJECT_ID}/my-docker-repo/my-image è il nome dell'immagine da compilare in Artifact Registry. Il passaggio di compilazione utilizza la sostituzione predefinita per l'ID progetto, pertanto questo valore viene sostituito automaticamente in fase di compilazione.
    • . è la posizione del codice sorgente, che indica l'origine si trova nella directory di lavoro attuale.

      {
         "steps": [
            {
               "name": "gcr.io/cloud-builders/docker",
               "args": [
                  "build",
                  "-t",
                  "us-central1-docker.pkg.dev/${PROJECT_ID}/my-docker-repo/myimage",
                  "."
               ]
            }
         ]
      }
      
  5. Aggiungi altri passaggi. Puoi aggiungere un numero qualsiasi di passaggi di compilazione al file di configurazione della compilazione includendo campi name aggiuntivi e indirizzandoli a cloud builders.

    Lo snippet seguente include altri due passaggi per il file di configurazione di build:

    • Un passaggio di compilazione Docker per richiamare il comando docker push per eseguire il push della compilazione dell'immagine nel passaggio precedente in Artifact Registry.
    • un passaggio di build per il comando Google Cloud SDK con gcloud del punto di ingresso specificato, che crea un'istanza Compute Engine dall'immagine container in Artifact Registry. Il campo env per specificare la zona Compute Engine e regione.

            {
               "name": "gcr.io/cloud-builders/docker",
               "args": [
                  "push",
                  "us-central1-docker.pkg.dev/${PROJECT_ID}/my-docker-repo/myimage"
               ]
            },
            {
               "name": "gcr.io/google.com/cloudsdktool/cloud-sdk",
               "entrypoint": "gcloud",
               "args": [
                  "compute",
                  "instances",
                  "create-with-container",
                  "my-vm-name",
                  "--container-image",
                  "us-central1-docker.pkg.dev/${PROJECT_ID}/my-docker-repo/myimage"
               ],
               "env": [
                  "CLOUDSDK_COMPUTE_REGION=us-central1",
                  "CLOUDSDK_COMPUTE_ZONE=us-central1-a"
               ]
            }
      
  6. Includi campi di configurazione di compilazione aggiuntivi. Puoi configurare ulteriormente la compilazione includendo campi come machineType, tags o timeout. Per l'elenco completo dei campi puoi includere nel file di configurazione di compilazione, vedi Panoramica della configurazione della build.

    Nell'esempio seguente, il passaggio di compilazione gcr.io/google.com/cloudsdktool/cloud-sdk scade dopo 240 secondi.

          {
             "name": "gcr.io/google.com/cloudsdktool/cloud-sdk",
             "entrypoint": "gcloud",
             "timeout": "240s",
             "args": [
                "compute",
                "instances",
                "create-with-container",
                "my-vm-name",
                "--container-image",
                "us-central1-docker.pkg.dev/${PROJECT_ID}/my-docker-repo/myimage"
             ],
             "env": [
                "CLOUDSDK_COMPUTE_REGION=us-central1",
                "CLOUDSDK_COMPUTE_ZONE=us-central1-a"
             ]
          }
    

    Vedi lo snippet seguente per l'esempio completo di una build di base di configurazione:

    {
       "steps": [
          {
             "name": "gcr.io/cloud-builders/docker",
             "args": [
                "build",
                "-t",
                "us-central1-docker.pkg.dev/${PROJECT_ID}/my-docker-repo/myimage",
                "."
             ]
          },
          {
             "name": "gcr.io/cloud-builders/docker",
             "args": [
                "push",
                "us-central1-docker.pkg.dev/${PROJECT_ID}/my-docker-repo/myimage"
             ]
          },
          {
             "name": "gcr.io/google.com/cloudsdktool/cloud-sdk",
             "entrypoint": "gcloud",
             "timeout": "240s",
             "args": [
                "compute",
                "instances",
                "create-with-container",
                "my-vm-name",
                "--container-image",
                "us-central1-docker.pkg.dev/${PROJECT_ID}/my-docker-repo/myimage"
             ],
             "env": [
                "CLOUDSDK_COMPUTE_REGION=us-central1",
                "CLOUDSDK_COMPUTE_ZONE=us-central1-a"
             ]
          }
       ]
    }
    

    Nell'esempio, le immagini container vengono archiviate in Artifact Registry. Se la compilazione produce artefatti non contenitore, puoi archiviarli in Cloud Storage utilizzando il campo artifacts. Per istruzioni su come eseguire questa operazione, consulta Archiviazione di immagini e elementi.

Passaggi successivi