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 per consentire a Cloud Build di eseguire le tue attività. Ti servirà un file di configurazione della build se avvii le build utilizzando lo strumento gcloud a riga di comando o gli attivatori della build. Puoi scrivere il file della configurazione di compilazione utilizzando la sintassi YAML o JSON.

Prima di iniziare

Leggi la Panoramica della configurazione di compilazione per scoprire 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 principale 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. In steps:, aggiungi un campo name e indirizzalo 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 generatore nel campo name non ha un punto di entry, viene utilizzato il primo elemento in args come punto di entry.

    Nel seguente esempio:

    • build è il punto di contatto del cloud builder Docker.
    • -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 che il codice si trova nella directory di lavoro corrente.

      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 della compilazione includendo campi name aggiuntivi e indirizzandoli a cloud builders.

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

    • 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 compilazione per il comando Google Cloud SDK con il punto di contatto gcloud specificato, che crea un'istanza Compute Engine dall'immagine del contenitore 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 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'
    

    Consulta lo snippet seguente 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 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.

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. In steps:, aggiungi un campo name e indirizzalo 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 generatore nel campo name non ha un punto di entry, viene utilizzato il primo elemento in args come punto di entry.

    Nel seguente esempio:

    • build è il punto di contatto del cloud builder Docker.
    • -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 che il codice si trova nella directory di lavoro corrente.

      {
         "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 della compilazione:

    • 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 compilazione per il comando Google Cloud SDK con il punto di contatto gcloud specificato, che crea un'istanza Compute Engine dall'immagine del contenitore 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 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/myimage"
             ],
             "env": [
                "CLOUDSDK_COMPUTE_REGION=us-central1",
                "CLOUDSDK_COMPUTE_ZONE=us-central1-a"
             ]
          }
    

    Consulta lo snippet seguente 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 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