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 empezar a compilar 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 comienzas a realizar compilaciones con 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

Crea una configuración de compilación

En los siguientes pasos, se explica cómo crear un archivo de configuración de compilación simple. Cada uno de los campos en el archivo de configuració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 otros 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 compilación de Cloud Build.

  2. Agrega el campo de pasos. La sección steps en el archivo de configuración de compilación contiene los pasos de compilación que deseas que Cloud Build realice.

    steps:
    
  3. Agrega el primer paso. En steps:, agrega un campo name y haz que apunte a una imagen de contenedor para ejecutar tu tarea. Cloud Build y su comunidad de desarrolladores proporcionan muchas imágenes de contenedores con herramientas comunes y lenguajes instalados en ellas. 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.

    El siguiente fragmento muestra un paso de compilación con un compilador de docker gcr.io/cloud-builders/docker, que es una imagen de contenedor ejecutada en 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 referido en el campo name. Si el compilador del campo name tiene un punto de entrada, se usará args en la lista para acceder a ese punto de entrada. Si el compilador del campo name no tiene un punto de entrada, se usará el primer elemento de args como el punto de entrada.

    En el siguiente ejemplo, sucede lo siguiente:

    • build es el punto de entrada al compilador de Cloud de Docker.
    • -t es la etiqueta de Docker.
    • gcr.io/my-project/my-image es el nombre de la imagen que se va a compilar.
    • . es la ubicación del código fuente.

      steps:
      - name: 'gcr.io/cloud-builders/docker'
        args: ['build', '-t', 'gcr.io/my-project/my-image', '.']
      
  5. Incluye cualquier campo adicional para el paso. Puedes agregar más campos a tu paso de compilación, como variables de entorno y directorios de trabajo, para configurar tus pasos de compilación. Para obtener una descripción de todos los campos que puedes incluir en un paso de compilación, consulta Pasos de compilación.

    En el siguiente ejemplo, el campo timeout se incluye para especificar que el paso docker debe agotarse luego de 500 s:

    steps:
    - name: 'gcr.io/cloud-builders/docker'
      args: ['build', '-t', 'gcr.io/my-project/my-image', '.']
      timeout: 500s
    
  6. Agrega más pasos. Puedes agregar cualquier cantidad de pasos de compilación a tu archivo de configuración de compilación si incluyes campos name adicionales y haces que apunten a los compiladores de Cloud.

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

    • un paso de compilación de Docker a fin de invocar el comando docker push, para enviar la compilación de imagen del paso anterior a Container Registry
    • un paso de compilación de kubectl para invocar el comando kubectl set image, que implementa la imagen en un clúster de Kubernetes Engine. El campo env se incluye para especificar la zona de Compute Engine y el clúster de Kubernetes Engine.

      steps:
      - name: 'gcr.io/cloud-builders/docker'
        args: ['build', '-t', 'gcr.io/my-project/my-image', '.']
        timeout: 500s
      - name: 'gcr.io/cloud-builders/docker'
        args: ['push', 'gcr.io/my-project/my-image']
      - name: 'gcr.io/cloud-builders/kubectl'
        args: ['set', 'image', 'deployment/my-deployment', 'my-container=gcr.io/my-project/my-image']
        env:
        - 'CLOUDSDK_COMPUTE_ZONE=us-east4-b'
        - 'CLOUDSDK_CONTAINER_CLUSTER=my-cluster'
      
  7. Incluye configuración de compilación adicional. Puedes configurar aún más la compilación si incluyes campos como machineType y tags. Para obtener una lista completa de todos 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.

    El siguiente ejemplo agrega los siguientes campos a la compilación:

    • machineType, que especifica el tamaño de la máquina virtual para ejecutar la compilación.
    • timeout, que especifica el tiempo tras el cual se agotará la compilación.
    • tags, para anotar la compilación.

      steps:
      - name: 'gcr.io/cloud-builders/docker'
        args: ['build', '-t', 'gcr.io/my-project/my-image', '.']
        timeout: 500s
      - name: 'gcr.io/cloud-builders/docker'
        args: ['push', 'gcr.io/my-project/my-image']
      - name: 'gcr.io/cloud-builders/kubectl'
        args: ['set', 'image', 'deployment/my-deployment', 'my-container=gcr.io/my-project/my-image']
        env:
        - 'CLOUDSDK_COMPUTE_ZONE=us-east4-b'
        - 'CLOUDSDK_CONTAINER_CLUSTER=my-cluster'
      options:
          machineType: 'N1_HIGHCPU_8'
      timeout: 660s
      tags: ['mytag1', 'mytag2']
      
  8. Almacena las imágenes y artefactos compilados. Si tu compilación produce imágenes de contenedor, puedes elegir almacenarlas en Container Registry. Puedes hacerlo con el campo images.

    El siguiente ejemplo almacena la imagen compilada en el paso Docker en Container Registry.

    steps:
    - name: 'gcr.io/cloud-builders/docker'
      args: ['build', '-t', 'gcr.io/my-project/my-image', '.']
      timeout: 500s
    - name: 'gcr.io/cloud-builders/docker'
      args: ['push', 'gcr.io/my-project/my-image']
    - name: 'gcr.io/cloud-builders/kubectl'
      args: ['set', 'image', 'deployment/my-deployment', 'my-container=gcr.io/my-project/my-image']
      env:
      - 'CLOUDSDK_COMPUTE_ZONE=us-east4-b'
      - 'CLOUDSDK_CONTAINER_CLUSTER=my-cluster'
    options:
        machineType: 'N1_HIGHCPU_8'
    timeout: 660s
    tags: ['mytag1', 'mytag2']
    images: ['gcr.io/my-project/myimage']
    

    Si tu compilación produce artefactos que no son de contenedor, puedes almacenarlos en Cloud Storage con el campo artifacts. Para obtener instrucciones sobre cómo hacer esto, 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 compilación de Cloud Build.

  2. Agrega el campo de pasos. La sección steps en el archivo de configuración contiene los pasos de compilación que deseas que realice Cloud Build.

    {
        "steps": [
        {
        }
        ]
    }
    
  3. Agrega el primer paso. En steps:, agrega un campo name y haz que apunte a una imagen de contenedor para ejecutar tu tarea. Cloud Build y su comunidad de desarrolladores proporcionan muchas imágenes de contenedores con herramientas comunes y lenguajes instalados en ellas. 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.

    El siguiente fragmento muestra un paso de compilación con un compilador de Docker gcr.io/cloud-builders/Docker, que es una imagen de contenedor ejecutada en 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 referido en el campo name. Si el compilador del campo name tiene un punto de entrada, se usará args en la lista para acceder a ese punto de entrada. Si el compilador del campo name no tiene un punto de entrada, se usará el primer elemento de args como el punto de entrada.

    En el siguiente ejemplo, sucede lo siguiente:

    • build es el punto de entrada al compilador de Cloud de Docker.
    • -t es la etiqueta de Docker.
    • gcr.io/my-project/my-image es el nombre de la imagen que se va a compilar.
    • . es la ubicación del código fuente.

      {
          "steps": [
          {
              "name": "gcr.io/cloud-builders/docker",
              "args": [
                  "build",
                  "-t",
                  "gcr.io/my-project/my-image",
                  "."
              ]
          }
          ]
      }
      
  5. Incluye cualquier campo adicional para el paso. Puedes agregar más campos a tu paso de compilación, como variables de entorno y directorios de trabajo, para configurar tus pasos de compilación. Para obtener una descripción de todos los campos que puedes incluir en un paso de compilación, consulta Pasos de compilación.

    En el siguiente ejemplo, el campo timeout se incluye para especificar que el paso docker debe agotarse luego de 500 s:

    {
        "steps": [
        {
            "name": "gcr.io/cloud-builders/docker",
            "args": [
                "build",
                "-t",
                "gcr.io/my-project/my-image",
                "."
            ],
            "timeout": "500s"
        }
        ]
    }
    
  6. Agrega más pasos. Puedes agregar cualquier cantidad de pasos de compilación a tu archivo de configuración de compilación si incluyes campos name adicionales y haces que apunten a los compiladores de cloud.

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

    • un paso de compilación de Docker a fin de invocar el comando docker push, para enviar la compilación de imagen del paso anterior a Container Registry
    • un paso de compilación de kubectl para invocar el comando kubectl set image, que implementa la imagen en un clúster de Kubernetes Engine. El campo env se incluye para especificar la zona de Compute Engine y el clúster de Kubernetes Engine.

      {
          "steps": [
          {
              "name": "gcr.io/cloud-builders/docker",
              "args": [
                  "build",
                  "-t",
                  "gcr.io/my-project/my-image",
                  "."
              ],
              "timeout": "500s"
          },
          {
              "name": "gcr.io/cloud-builders/docker",
              "args": [
                  "push",
                  "gcr.io/my-project/my-image",
              ],
          },
          {
              "name": "gcr.io/cloud-builders/kubectl",
              "args": [
                  "set",
                  "image",
                  "deployment/my-deployment",
                  "my-container=gcr.io/my-project/my-image"
              ],
              "env": [
                  "CLOUDSDK_COMPUTE_ZONE=us-east4-b",
                  "CLOUDSDK_CONTAINER_CLUSTER=my-cluster"
              ]
          }
          ]
      }
      
  7. Incluye configuración de compilación adicional. Puedes configurar aún más la compilación si incluyes campos como machineType y tags. Para obtener una lista completa de todos 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.

    El siguiente ejemplo agrega los siguientes campos a la compilación:

    • machineType, que especifica el tamaño de la máquina virtual para ejecutar la compilación.
    • timeout, que especifica el tiempo tras el cual se agotará la compilación.
    • tags, para anotar la compilación.

      {
          "steps": [
          {
              "name": "gcr.io/cloud-builders/docker",
              "args": [
                  "build",
                  "-t",
                  "gcr.io/my-project/my-image",
                  "."
              ],
              "timeout": "500s"
          },
          {
              "name": "gcr.io/cloud-builders/docker",
              "args": [
                  "push",
                  "gcr.io/my-project/my-image",
              ],
          },
          {
              "name": "gcr.io/cloud-builders/kubectl",
              "args": [
                  "set",
                  "image",
                  "deployment/my-deployment",
                  "my-container=gcr.io/my-project/my-image"
              ],
              "env": [
                  "CLOUDSDK_COMPUTE_ZONE=us-east4-b",
                  "CLOUDSDK_CONTAINER_CLUSTER=my-cluster"
              ]
          }
          ],
          "options": {
              "machineType": "N1_HIGHCPU_8"
          },
          "timeout": "660s",
          "tags": [
              "mytag1",
              "mytag2"
          ]
      }
      
  8. Almacena las imágenes y artefactos compilados. Si tu compilación produce imágenes de contenedor, puedes elegir almacenarlas en Container Registry. Puedes hacerlo con el campo images.

    El siguiente ejemplo almacena la imagen compilada en el paso Docker en Container Registry.

    {
        "steps": [
        {
            "name": "gcr.io/cloud-builders/docker",
            "args": [
                "build",
                "-t",
                "gcr.io/my-project/my-image",
                "."
            ],
            "timeout": "500s"
        },
        {
                "name": "gcr.io/cloud-builders/docker",
                "args": [
                    "push",
                    "gcr.io/my-project/my-image",
                ],
        },
        {
            "name": "gcr.io/cloud-builders/kubectl",
            "args": [
                "set",
                "image",
                "deployment/my-deployment",
                "my-container=gcr.io/my-project/my-image"
            ],
            "env": [
                "CLOUDSDK_COMPUTE_ZONE=us-east4-b",
                "CLOUDSDK_CONTAINER_CLUSTER=my-cluster"
            ]
        }
        ],
        "options": {
            "machineType": "N1_HIGHCPU_8"
        },
        "timeout": "660s",
        "tags": [
            "mytag1",
            "mytag2"
        ],
        "images": [
            "gcr.io/my-project/myimage"
        ]
    }
    

    Si tu compilación produce artefactos que no son de contenedor, puedes almacenarlos en Cloud Storage con el campo artifacts. Para obtener instrucciones sobre cómo hacer esto, consulta Almacena imágenes y artefactos.

Pasos siguientes

¿Te ha resultado útil esta página? Enviar comentarios:

Enviar comentarios sobre...

Documentación de Cloud Build