Crea un archivo de configuración de compilación básico

En esta página, se describe cómo crear un archivo de configuración de compilación que puedes usar para comenzar una compilación en Cloud Build.

Un archivo de configuración de compilación define los campos que Cloud Build necesita para realizar todas tus tareas. Necesitarás un archivo de configuración de compilación si inicias compilaciones mediante la herramienta de línea de comandos de gcloud o los activadores de compilación. , Puedes escribir el archivo de configuración de compilación con la sintaxis de YAML o JSON.

Antes de comenzar

Lee Descripción general de la configuración de compilación para obtener información sobre los campos que puedes incluir en un archivo de configuración de compilación.

Crea una configuración de compilación

En los siguientes pasos, se explica cómo crear un archivo de configuración de compilación básico. Cada uno de los campos del archivo de configuración de compilación define una parte de la tarea que deseas realizar. El único campo obligatorio en el archivo de configuración de compilación es el campo name para un paso. Todos los demás campos son opcionales.

YAML

  1. Crea el archivo de configuración de compilación. En el directorio raíz de tu proyecto, crea un archivo llamado cloudbuild.yaml. Este es tu archivo de configuración de Cloud Build.

  2. Agrega el campo steps. En la sección steps del archivo de configuración de compilación, se encuentran los pasos de compilación que quieres que Cloud Build realice.

    steps:
    
  3. Agrega el primer paso. En steps:, agrega un campo name y dirígelo a una imagen de contenedor para ejecutar la tarea. Cloud Build y su comunidad de desarrolladores proporcionan varias imágenes de contenedor con lenguajes y herramientas comunes instalados. Puedes usar cualquiera de estas imágenes (también llamadas compiladores de Cloud) o cualquier imagen disponible de forma pública en un paso de compilación. Para obtener más información sobre diferentes tipos de imágenes de contenedor que puedes usar en un paso de compilación, consulta compiladores de cloud.

    En el siguiente fragmento, se muestra un paso de compilación con un compilador de docker (gcr.io/cloud-builders/docker) que es una imagen de contenedor que ejecuta Docker.

    steps:
    - name: 'gcr.io/cloud-builders/docker'
    
  4. Agrega argumentos de paso. El campo args de un paso toma una lista de argumentos y los pasa al compilador al que se hace referencia en el campo name. Si el compilador del campo name tiene un punto de entrada, se usa args en la lista para acceder a ese punto de entrada. Si el compilador del campo name no tiene un punto de entrada, se usa el primer elemento de args como punto de entrada.

    En el siguiente ejemplo:

    • build es el punto de entrada del compilador en la nube de Docker.
    • -t es la etiqueta de Docker.
    • us-central1-docker.pkg.dev/${PROJECT_ID}/my-docker-repo/my-image es el nombre de la imagen que se compilará en Artifact Registry. En el paso de compilación, se usa la sustitución predeterminada por el ID del proyecto; por lo tanto, este valor se reemplaza de forma automática en el tiempo de compilación.
    • . es la ubicación del código fuente, que indica que el código fuente se encuentra en el directorio de trabajo actual.

      steps:
      - name: 'gcr.io/cloud-builders/docker'
        args: ['build', '-t', 'us-central1-docker.pkg.dev/${PROJECT_ID}/my-docker-repo/my-image', '.']
      
  5. Agrega más pasos. Puedes agregar cualquier cantidad de pasos de compilación al archivo de configuración de compilación si incluyes campos name adicionales y los diriges a compiladores en la nube.

    El siguiente fragmento agrega dos pasos más al archivo de configuración de compilación:

    • Un paso de compilación de Docker para invocar el comando docker push a fin de enviar la compilación de imagen en el paso anterior a Artifact Registry.
    • un paso de compilación para el comando del SDK de Google Cloud con el punto de entrada gcloud especificado, que crea una instancia de Compute Engine a partir de la imagen de contenedor en Artifact Registry. El campo env se incluye para especificar la zona y región de Compute Engine.

       - name: 'gcr.io/cloud-builders/docker'
         args: ['push', '-image', '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. Incluye campos de configuración de compilación adicionales. Para configurar la compilación aún más, incluye campos como machineType, tag o timeout. Para obtener una lista completa de los campos que puedes incluir en el archivo de configuración de compilación, consulta Descripción general de la configuración de compilación.

    En el siguiente ejemplo, se agota el tiempo de espera del paso de compilación gcr.io/google.com/cloudsdktool/cloud-sdk después de 240 segundos.

      - 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 el siguiente fragmento para ver el ejemplo completo de un archivo de configuración de compilación básico:

    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', '-image',
               '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'

    En el ejemplo, las imágenes de contenedor se almacenan en Artifact Registry. Si tu compilación produce artefactos que no son de contenedor, puedes almacenarlos en Cloud Storage mediante el campo artifacts. Si deseas obtener instrucciones para realizar esta tarea, consulta Almacena imágenes y artefactos.

JSON

  1. Crea el archivo de configuración de compilación. En el directorio raíz de tu proyecto, crea un archivo llamado cloudbuild.json. Este es tu archivo de configuración de Cloud Build.

  2. Agrega el campo steps. En la sección steps del archivo de configuración de compilación, se encuentran los pasos de compilación que quieres que Cloud Build realice.

    {
       "steps":
    }
    
  3. Agrega el primer paso. En steps:, agrega un campo name y dirígelo a una imagen de contenedor para ejecutar la tarea. Cloud Build y su comunidad de desarrolladores proporcionan varias imágenes de contenedor con lenguajes y herramientas comunes instalados. Puedes usar cualquiera de estas imágenes (también llamadas compiladores de Cloud) o cualquier imagen disponible de forma pública en un paso de compilación. Para obtener más información sobre diferentes tipos de imágenes de contenedor que puedes usar en un paso de compilación, consulta compiladores de cloud.

    En el siguiente fragmento, se muestra un paso de compilación con un compilador de docker (gcr.io/cloud-builders/docker) que es una imagen de contenedor que ejecuta Docker.

    {
       "steps": [
          {
             "name": "gcr.io/cloud-builders/docker"
          }
       ]
    }
    
  4. Agrega argumentos de paso. El campo args de un paso toma una lista de argumentos y los pasa al compilador al que se hace referencia en el campo name. Si el compilador del campo name tiene un punto de entrada, se usa args en la lista para acceder a ese punto de entrada. Si el compilador del campo name no tiene un punto de entrada, se usa el primer elemento de args como punto de entrada.

    En el siguiente ejemplo:

    • build es el punto de entrada del compilador en la nube de Docker.
    • -t es la etiqueta de Docker.
    • us-central1-docker.pkg.dev/${PROJECT_ID}/my-docker-repo/my-image es el nombre de la imagen que se compilará en Artifact Registry. En el paso de compilación, se usa la sustitución predeterminada por el ID del proyecto; por lo tanto, este valor se reemplaza de forma automática en el tiempo de compilación.
    • . es la ubicación del código fuente, que indica que el código fuente se encuentra en el directorio de trabajo actual.

      {
         "steps": [
            {
               "name": "gcr.io/cloud-builders/docker",
               "args": [
                  "build",
                  "-t",
                  "us-central1-docker.pkg.dev/${PROJECT_ID}/my-docker-repo/myimage",
                  "."
               ]
            }
         ]
      }
      
  5. Agrega más pasos. Puedes agregar cualquier cantidad de pasos de compilación al archivo de configuración de compilación si incluyes campos name adicionales y los diriges a compiladores en la nube.

    El siguiente fragmento agrega dos pasos más al archivo de configuración de compilación:

    • Un paso de compilación de Docker para invocar el comando docker push a fin de enviar la compilación de imagen en el paso anterior a Artifact Registry.
    • un paso de compilación para el comando del SDK de Google Cloud con el punto de entrada gcloud especificado, que crea una instancia de Compute Engine a partir de la imagen de contenedor en Artifact Registry. El campo env se incluye para especificar la zona y región de Compute Engine.

            {
               "name": "gcr.io/cloud-builders/docker",
               "args": [
                  "push",
                  "-image",
                  "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. Incluye campos de configuración de compilación adicionales. Para configurar la compilación aún más, incluye campos como machineType, tag o timeout. Para obtener una lista completa de los campos que puedes incluir en el archivo de configuración de compilación, consulta Descripción general de la configuración de compilación.

    En el siguiente ejemplo, se agota el tiempo de espera del paso de compilación gcr.io/google.com/cloudsdktool/cloud-sdk después de 240 segundos.

          {
             "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 el siguiente fragmento para ver el ejemplo completo de un archivo de configuración de compilación básico:

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

    En el ejemplo, las imágenes de contenedor se almacenan en Artifact Registry. Si tu compilación produce artefactos que no son de contenedor, puedes almacenarlos en Cloud Storage mediante el campo artifacts. Si deseas obtener instrucciones para realizar esta tarea, consulta Almacena imágenes y artefactos.

Pasos siguientes