Crea un file di configurazione di compilazione

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

Un file di configurazione della build definisce i campi necessari a Cloud Build per eseguire le attività. Avrai bisogno di un file di configurazione della build se avvii le build utilizzando lo strumento a riga di comando gcloudo trigger di build. Puoi scrivere il file di configurazione della build utilizzando la sintassi YAML o JSON.

Prima di iniziare

Leggi la panoramica della configurazione della build per scoprire i campi che puoi includere in un file di configurazione della build.

Creazione di una configurazione della 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 radice del progetto, crea un file denominato cloudbuild.yaml. Questo è il file di configurazione di Cloud Build.

  2. Aggiungi il campo steps. La sezione steps nel file di configurazione della build contiene i passaggi di build 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 build. Per informazioni sui diversi tipi di immagini container che puoi utilizzare in un passaggio di build, consulta Cloud Builder.

    Il seguente snippet mostra un passaggio di build con un builder docker gcr.io/cloud-builders/docker, che è 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 accetta un elenco di argomenti e li passa al builder a cui fa riferimento il campo name. Se il builder nel campo name ha un punto di ingresso, args nell'elenco viene utilizzato per accedere a quel punto di ingresso. Se il builder nel campo name non ha un punto di ingresso, il primo elemento in args viene utilizzato come punto di ingresso.

    Nel seguente esempio:

    • build è il punto di ingresso 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 creare in Artifact Registry. Il passaggio di build utilizza la sostituzione predefinita per l'ID progetto, pertanto questo valore viene sostituito automaticamente al tempo di compilazione.
    • . è la posizione del codice sorgente, che indica che il codice sorgente 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 build al file di configurazione della build includendo campi name aggiuntivi e indirizzandoli ai cloud builder.

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

    • Un passaggio di build Docker per richiamare il comando docker push per eseguire il push della build dell'immagine nel passaggio precedente ad Artifact Registry.
    • Un passaggio di build per il Google Cloud comando SDK con il gcloud punto di ingresso specificato, che crea un'istanza di 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 campi di configurazione di compilazione aggiuntivi. 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, il gcr.io/google.com/cloudsdktool/cloud-sdk passaggio di build 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'
    

    Per l'esempio completo di un file di configurazione della build di base, vedi lo snippet seguente:

    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 build produce artefatti non container, puoi archiviarli in Cloud Storage utilizzando il campo artifacts. Per istruzioni su come eseguire questa operazione, consulta Archiviare 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 file di configurazione di Cloud Build.

  2. Aggiungi il campo steps. La sezione steps nel file di configurazione della build contiene i passaggi di build 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 build. Per informazioni sui diversi tipi di immagini container che puoi utilizzare in un passaggio di build, consulta Cloud Builder.

    Il seguente snippet mostra un passaggio di build con un builder docker gcr.io/cloud-builders/docker, che è 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 accetta un elenco di argomenti e li passa al builder a cui fa riferimento il campo name. Se il builder nel campo name ha un punto di ingresso, args nell'elenco viene utilizzato per accedere a quel punto di ingresso. Se il builder nel campo name non ha un punto di ingresso, il primo elemento in args viene utilizzato come punto di ingresso.

    Nel seguente esempio:

    • build è il punto di ingresso 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 creare in Artifact Registry. Il passaggio di build utilizza la sostituzione predefinita per l'ID progetto, pertanto questo valore viene sostituito automaticamente al tempo di compilazione.
    • . è la posizione del codice sorgente, che indica che il codice sorgente 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 build al file di configurazione della build includendo campi name aggiuntivi e indirizzandoli ai cloud builder.

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

    • Un passaggio di build Docker per richiamare il comando docker push per eseguire il push della build dell'immagine nel passaggio precedente ad Artifact Registry.
    • Un passaggio di build per il Google Cloud comando SDK con il gcloud punto di ingresso specificato, che crea un'istanza di 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 campi di configurazione di compilazione aggiuntivi. 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, il gcr.io/google.com/cloudsdktool/cloud-sdk passaggio di build 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"
             ]
          }
    

    Per l'esempio completo di un file di configurazione della build di base, vedi lo snippet seguente:

    {
       "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 build produce artefatti non container, puoi archiviarli in Cloud Storage utilizzando il campo artifacts. Per istruzioni su come eseguire questa operazione, consulta Archiviare immagini e artefatti.

Passaggi successivi