Crear un archivo de configuración de compilación

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

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

Antes de empezar

Consulta la información general sobre la configuración de compilación para saber qué campos puedes incluir en un archivo de configuración de compilación.

Crear una configuración de compilación

En los siguientes pasos se explica cómo crear un archivo básico de configuración de versiones. Cada uno de los campos del archivo de configuración de compilación define una parte de la tarea que quieres realizar. El único campo obligatorio del archivo de configuración de compilación es el campo name de un paso. 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. Añade el campo de pasos. La sección steps del archivo de configuración de compilación contiene los pasos de compilación que quieres que realice Cloud Build.

    steps:
    
  3. Añade el primer paso. En steps:, añade 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 herramientas y lenguajes comunes instalados. Puedes usar cualquiera de estas imágenes (también llamadas Cloud Builders) o cualquier imagen disponible públicamente en un paso de compilación. Para obtener información sobre los distintos tipos de imágenes de contenedor que puedes usar en un paso de compilación, consulta Compiladores de Cloud.

    El siguiente fragmento muestra una fase de compilación con un compilador docker gcr.io/cloud-builders/docker, que es una imagen de contenedor que ejecuta Docker.

    steps:
    - name: 'gcr.io/cloud-builders/docker'
    
  4. Añade argumentos de paso. El campo args de un paso toma una lista de argumentos y los pasa al compilador al que hace referencia 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 ningún 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 de Docker en la nube.
    • -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 va a compilar en Artifact Registry. El paso de compilación usa la sustitución predeterminada del ID de proyecto, por lo que este valor se sustituye automáticamente en el momento de la compilación.
    • . es la ubicación del código fuente, lo que indica que el código fuente está 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. Añadir más pasos Puedes añadir cualquier número de pasos de compilación al archivo de configuración de la compilación incluyendo campos name adicionales y dirigiéndolos a cloud builders.

    El siguiente fragmento incluye dos pasos más en el archivo de configuración de compilación:

    • Un paso de compilación de Docker para invocar el comando docker push y enviar la imagen compilada en el paso anterior a Artifact Registry.
    • un paso de compilación para el comando del SDK Google Cloud con el punto de entrada gcloud especificado, que crea una instancia de Compute Engine a partir de la imagen de contenedor de Artifact Registry. El campo env se incluye para especificar la zona y la región de 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. Incluye campos de configuración de compilación adicionales. Puede configurar aún más la compilación incluyendo campos como machineType, tags o timeout. Para ver la lista completa de campos que puedes incluir en el archivo de configuración de compilación, consulta el artículo Descripción general de la configuración de compilación.

    En el siguiente ejemplo, el paso de compilación gcr.io/google.com/cloudsdktool/cloud-sdk se agota tras 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 un ejemplo completo de un archivo básico de configuración de versiones:

    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'

    En el ejemplo, las imágenes de contenedor se almacenan en Artifact Registry. Si tu compilación genera artefactos que no son contenedores, puedes almacenarlos en Cloud Storage mediante el campo artifacts. Para obtener instrucciones sobre cómo hacerlo, consulta Almacenar 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. Añade el campo de pasos. La sección steps del archivo de configuración de compilación contiene los pasos de compilación que quieres que realice Cloud Build.

    {
       "steps":
    }
    
  3. Añade el primer paso. En steps:, añade 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 herramientas y lenguajes comunes instalados. Puedes usar cualquiera de estas imágenes (también llamadas Cloud Builders) o cualquier imagen disponible públicamente en un paso de compilación. Para obtener información sobre los distintos tipos de imágenes de contenedor que puedes usar en un paso de compilación, consulta Compiladores de Cloud.

    El siguiente fragmento muestra una fase de compilación con un compilador docker gcr.io/cloud-builders/docker, que es una imagen de contenedor que ejecuta Docker.

    {
       "steps": [
          {
             "name": "gcr.io/cloud-builders/docker"
          }
       ]
    }
    
  4. Añade argumentos de paso. El campo args de un paso toma una lista de argumentos y los pasa al compilador al que hace referencia 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 ningún 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 de Docker en la nube.
    • -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 va a compilar en Artifact Registry. El paso de compilación usa la sustitución predeterminada del ID de proyecto, por lo que este valor se sustituye automáticamente en el momento de la compilación.
    • . es la ubicación del código fuente, lo que indica que el código fuente está 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. Añadir más pasos Puedes añadir cualquier número de pasos de compilación al archivo de configuración de la compilación incluyendo campos name adicionales y dirigiéndolos a cloud builders.

    El siguiente fragmento incluye dos pasos más en el archivo de configuración de compilación:

    • Un paso de compilación de Docker para invocar el comando docker push y enviar la imagen compilada en el paso anterior a Artifact Registry.
    • un paso de compilación para el comando del SDK Google Cloud con el punto de entrada gcloud especificado, que crea una instancia de Compute Engine a partir de la imagen de contenedor de Artifact Registry. El campo env se incluye para especificar la zona y la región de 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. Incluye campos de configuración de compilación adicionales. Puede configurar aún más la compilación incluyendo campos como machineType, tags o timeout. Para ver la lista completa de campos que puedes incluir en el archivo de configuración de compilación, consulta el artículo Descripción general de la configuración de compilación.

    En el siguiente ejemplo, el paso de compilación gcr.io/google.com/cloudsdktool/cloud-sdk se agota tras 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 un ejemplo completo de un archivo básico de configuración de versiones:

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

    En el ejemplo, las imágenes de contenedor se almacenan en Artifact Registry. Si tu compilación genera artefactos que no son contenedores, puedes almacenarlos en Cloud Storage mediante el campo artifacts. Para obtener instrucciones sobre cómo hacerlo, consulta Almacenar imágenes y artefactos.

Siguientes pasos