Creare un file di configurazione di compilazione

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

Un file di configurazione di compilazione definisce i campi necessari per consentire a Cloud Build di eseguire le tue attività. Dovrai iniziare un file di configurazione della build se stai iniziando le build utilizzando lo strumento a riga di comando gcloud o i trigger di build. Puoi scrivere il file di configurazione della build utilizzando la sintassi YAML o JSON.

Prima di iniziare

Leggi l'articolo Panoramica della configurazione di compilazione per ulteriori informazioni sui campi che puoi includere in un file di configurazione della 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à da 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 radice del progetto, crea un file denominato cloudbuild.yaml. Questo è il tuo file di configurazione Cloud Build.

  2. Aggiungi il campo dei passaggi. La sezione steps nel file di configurazione della build contiene i passaggi di build che vuoi vengano eseguiti da Cloud Build.

    steps:
    
  3. Aggiungi il primo passaggio. In steps:, aggiungi un campo name e puntalo su 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. In un passaggio della build, puoi utilizzare una di queste immagini (dette anche Cloud Builder) o una qualsiasi immagine disponibile pubblicamente. Per informazioni sui diversi tipi di immagini container che puoi utilizzare in un passaggio della build, consulta Cloud Build.

    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 di 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 builder nel campo name ha un punto di ingresso, args nell'elenco vengono utilizzati per accedere a quel punto di accesso. Se il builder nel campo name non ha un punto di ingresso, il primo elemento in args viene utilizzato come punto di ingresso.

    Nell'esempio seguente:

    • build è il punto di contatto per il cloud builder Docker.
    • -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 dell'ID progetto, pertanto questo valore viene sostituito automaticamente al momento della build.
    • . è 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 passaggi di compilazione al file di configurazione di compilazione includendo altri campi name e indirizzandoli a cloud builder.

    Il seguente snippet include altri due passaggi al file di configurazione della build:

    • un passaggio di build docker per richiamare il comando docker push per effettuare il push della build dell'immagine nel passaggio precedente ad Artifact Registry.
    • un passaggio di build per il comando Google Cloud SDK con il punto di accesso gcloud specificato, che crea un'istanza di Compute Engine dall'immagine container in Artifact Registry. Il campo env è incluso per specificare la zona e l'area geografica 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 ulteriori campi per la 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 della build.

    Nell'esempio seguente, la build di 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 il seguente snippet per l'esempio completo di un 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'

    Nell'esempio, le immagini container sono archiviate in Artifact Registry. Se la tua 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 artefatti.

JSON

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

  2. Aggiungi il campo dei passaggi. La sezione steps nel file di configurazione della build contiene i passaggi di build che vuoi vengano eseguiti da Cloud Build.

    {
       "steps":
    }
    
  3. Aggiungi il primo passaggio. In steps:, aggiungi un campo name e puntalo su 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. In un passaggio della build, puoi utilizzare una di queste immagini (dette anche Cloud Builder) o una qualsiasi immagine disponibile pubblicamente. Per informazioni sui diversi tipi di immagini container che puoi utilizzare in un passaggio della build, consulta Cloud Build.

    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 di 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 builder nel campo name ha un punto di ingresso, args nell'elenco vengono utilizzati per accedere a quel punto di accesso. Se il builder nel campo name non ha un punto di ingresso, il primo elemento in args viene utilizzato come punto di ingresso.

    Nell'esempio seguente:

    • build è il punto di contatto per il cloud builder Docker.
    • -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 dell'ID progetto, pertanto questo valore viene sostituito automaticamente al momento della build.
    • . è 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 passaggi di compilazione al file di configurazione di compilazione includendo altri campi name e indirizzandoli a cloud builder.

    Il seguente snippet include altri due passaggi al file di configurazione della build:

    • un passaggio di build docker per richiamare il comando docker push per effettuare il push della build dell'immagine nel passaggio precedente ad Artifact Registry.
    • un passaggio di build per il comando Google Cloud SDK con il punto di accesso gcloud specificato, che crea un'istanza di Compute Engine dall'immagine container in Artifact Registry. Il campo env è incluso per specificare la zona e l'area geografica 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 ulteriori campi per la 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 della build.

    Nell'esempio seguente, la build di 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 il seguente snippet per l'esempio completo di un 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"
             ]
          }
       ]
    }
    

    Nell'esempio, le immagini container sono archiviate in Artifact Registry. Se la tua 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 artefatti.

Passaggi successivi