Crea un file di configurazione di compilazione

Questa pagina descrive come creare un file di configurazione di compilazione da utilizzare per avviare una build su Cloud Build.

Un file di configurazione di compilazione definisce i campi necessari a Cloud Build per eseguire le tue attività. Se inizi a creare build utilizzando lo strumento a riga di comando gcloud o i trigger di build, avrai bisogno di un file di configurazione. Puoi scrivere il file di configurazione della build utilizzando la sintassi YAML o JSON.

Prima di iniziare

Per saperne di più sui campi che puoi includere in un file di configurazione di build, leggi Panoramica della configurazione di build.

Creazione di una configurazione di build

I passaggi seguenti spiegano come creare un file di configurazione della build di base. Ciascuno dei campi nel file di configurazione della build definisce una parte dell'attività che vuoi eseguire. L'unico campo obbligatorio nel file di configurazione della build è 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 del file di configurazione di compilazione contiene i passaggi di build che vuoi che Cloud Build esegua.

    steps:
    
  3. Aggiungi il primo passaggio. In 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 in cui sono installati strumenti e linguaggi comuni. Puoi utilizzare una qualsiasi di queste immagini (chiamate anche Cloud Builder) o qualsiasi immagine disponibile pubblicamente in un passaggio di build. Per informazioni sui diversi tipi di immagini container che puoi utilizzare in un passaggio di build, consulta Cloud Builder.

    Lo snippet seguente mostra un passaggio di build con un docker Builder gcr.io/cloud-builders/docker, che è un'immagine container che esegue Docker.

    steps:
    - name: 'gcr.io/cloud-builders/docker'
    
  4. Aggiungi argomenti dei passaggi. Il campo args di un passaggio accetta un elenco di argomenti e li passa al generatore a cui fa riferimento il campo name. Se il generatore nel campo name include un punto di ingresso, vengono utilizzati args nell'elenco per accedere a quel punto. Se il generatore nel campo name non dispone di un punto di ingresso, il primo elemento di args viene utilizzato come punto di ingresso.

    Nell'esempio seguente:

    • build è il punto di ingresso di Docker Cloud Builder.
    • -t è il tag Docker.
    • us-central1-docker.pkg.dev/${PROJECT_ID}/my-docker-repo/my-image è il nome dell'immagine da creare in Artifact Registry. Il passaggio di build utilizza la sostituzione predefinita per l'ID progetto, pertanto questo valore viene sostituito automaticamente al momento della creazione.
    • . è la posizione del codice sorgente, che indica che il codice sorgente 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 un numero qualsiasi di passi di build al file di configurazione della build includendo altri campi name e indirizzandoli a cloud builder.

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

    • un passaggio di build Docker per richiamare il comando docker push in modo da eseguire il push della build dell'immagine nel passaggio precedente ad Artifact Registry.
    • un passaggio di build per il comando Google Cloud SDK con l'entrypoint gcloud specificato, che crea un'istanza Compute Engine dall'immagine container in Artifact Registry. Il campo env è incluso per specificare la zona e la regione di Compute Engine.

       - 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 altri campi di configurazione della build. Puoi configurare ulteriormente la build includendo campi come machineType, tags o timeout. Per l'elenco completo dei campi che puoi includere nel file di configurazione della build, consulta la Panoramica della configurazione di build.

    Nell'esempio seguente, il passaggio della build gcr.io/google.com/cloudsdktool/cloud-sdk si verifica 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'
    

    Consulta lo snippet seguente per l'esempio completo di file di configurazione della build di base:

    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'

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

JSON

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

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

    {
       "steps":
    }
    
  3. Aggiungi il primo passaggio. In 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 in cui sono installati strumenti e linguaggi comuni. Puoi utilizzare una qualsiasi di queste immagini (chiamate anche Cloud Builder) o qualsiasi immagine disponibile pubblicamente in un passaggio di build. Per informazioni sui diversi tipi di immagini container che puoi utilizzare in un passaggio di build, consulta Cloud Builder.

    Lo snippet seguente mostra un passaggio di build con un docker Builder gcr.io/cloud-builders/docker, che è un'immagine container che esegue Docker.

    {
       "steps": [
          {
             "name": "gcr.io/cloud-builders/docker"
          }
       ]
    }
    
  4. Aggiungi argomenti dei passaggi. Il campo args di un passaggio accetta un elenco di argomenti e li passa al generatore a cui fa riferimento il campo name. Se il generatore nel campo name include un punto di ingresso, vengono utilizzati args nell'elenco per accedere a quel punto. Se il generatore nel campo name non dispone di un punto di ingresso, il primo elemento di args viene utilizzato come punto di ingresso.

    Nell'esempio seguente:

    • build è il punto di ingresso di Docker Cloud Builder.
    • -t è il tag Docker.
    • us-central1-docker.pkg.dev/${PROJECT_ID}/my-docker-repo/my-image è il nome dell'immagine da creare in Artifact Registry. Il passaggio di build utilizza la sostituzione predefinita per l'ID progetto, pertanto questo valore viene sostituito automaticamente al momento della creazione.
    • . è la posizione del codice sorgente, che indica che il codice sorgente 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 passi di build al file di configurazione della build includendo altri campi name e indirizzandoli a cloud builder.

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

    • un passaggio di build Docker per richiamare il comando docker push in modo da eseguire il push della build dell'immagine nel passaggio precedente ad Artifact Registry.
    • un passaggio di build per il comando Google Cloud SDK con l'entrypoint gcloud specificato, che crea un'istanza Compute Engine dall'immagine container in Artifact Registry. Il campo env è incluso per specificare la zona e la regione di Compute Engine.

            {
               "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 altri campi di configurazione della build. Puoi configurare ulteriormente la build includendo campi come machineType, tags o timeout. Per l'elenco completo dei campi che puoi includere nel file di configurazione della build, consulta la Panoramica della configurazione di build.

    Nell'esempio seguente, il passaggio della build gcr.io/google.com/cloudsdktool/cloud-sdk si verifica 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"
             ]
          }
    

    Consulta lo snippet seguente per l'esempio completo di file di configurazione della build di base:

    {
       "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"
             ]
          }
       ]
    }
    

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

Passaggi successivi