Automatiza las compilaciones con Cloud Build

En este tema, se describe cómo automatizar las compilaciones con Cloud Build y Cloud Source Repositories.

Puedes configurar Cloud Build para que genere automáticamente una imagen nueva cada vez que un usuario envía un cambio a los archivos almacenados en Cloud Source Repositories. Los eventos que inician compilaciones automáticas se denominan activadores de compilación. Estos activadores pueden ayudar a garantizar que las imágenes de tus contenedores se mantengan actualizadas. También puedes usarlos para compilar y probar ramas de funciones.

Los activadores de compilación pueden realizar una compilación basada en un Dockerfile o un archivo de configuración de compilación.

Usa un Dockerfile

Si quieres usar un Dockerfile para la configuración de compilación, deberás especificar el directorio de Dockerfile y proporcionar un nombre para la imagen resultante. Para obtener detalles sobre cómo crear Dockerfiles, consulta la documentación de Docker.

Una vez que hayas proporcionado el nombre de imagen y el Dockerfile, verás una vista previa del comando docker build que ejecuta tu compilación y un resumen de la configuración del activador.

Usa un archivo de configuración de compilación

A fin de usar un archivo de configuración de compilación para la configuración de tu compilación, tienes que proporcionar la ubicación de un archivo de configuración de compilación.

Una vez que hayas establecido la ubicación, verás un resumen del activador.

Antes de comenzar

Información adicional

  • Los activadores de compilación usan clonaciones superficiales de un repositorio. Con las clonaciones superficiales, se extrae del espacio de trabajo solo la confirmación individual que activó la compilación automática. Para obtener más información y ver cómo incluir más de tu historial de repositorios, consulta Crea clonaciones no superficiales.

  • Si usas otro proveedor de Git alojado, como GitHub o Bitbucket, y aún necesitas duplicar el repositorio en Cloud Source Repositories, debes tener el permiso cloudbuilds.builds.create para el proyecto de Google Cloud con el que trabajas. Por lo general, este permiso se otorga a través de la función cloudbuild.builds.editor.

    Cuando configuras un activador de compilación con un repositorio externo por primera vez, debes configurar la autorización con ese repositorio. Para obtener más información, consulta Agrega un repositorio como recurso remoto.

    Una vez que configuras tu repositorio externo, Cloud Source Repositories crea un duplicado.

  • Para obtener información sobre las cuotas y los límites de Cloud Build, consulta Cuotas y límites en la documentación de Cloud Build.

Crea un activador de compilación

Consola

  1. Abre la página Activadores en la consola de Google Cloud.

    Abrir la página Activadores

  2. Selecciona tu proyecto en el menú desplegable del selector de proyectos en la parte superior de la página.

  3. Haz clic en Abrir.

  4. Haz clic en Crear activador.

  5. Ingresa las siguientes opciones de configuración del activador:

    • Nombre: Ingresa un nombre para el activador.

    • Descripción (opcional): Ingresa una descripción para el activador.

    • Evento: Selecciona el evento de repositorio que invoca al activador.

      • Enviar a una rama: Configura el activador para que inicie compilaciones a partir de las confirmaciones en una rama en particular.

      • Enviar etiqueta nueva: Configura el activador para que inicie compilaciones a partir de las confirmaciones que contengan una etiqueta específica.

    • Fuente: Selecciona el repositorio, y la rama o etiqueta correspondiente para buscar eventos.

      Cuando se ejecute la compilación, el contenido de tu repositorio se copiará en /workspace, el directorio de trabajo predeterminado que usa Cloud Build. Obtén más información sobre los directorios de trabajo en la página de descripción general de la configuración de compilación.

      • Rama o Etiqueta: Especifica una expresión regular con la rama o el valor de la etiqueta que deben coincidir. No se pueden usar barras diagonales (/) en las etiquetas. Para obtener información acerca de la sintaxis de expresión regular aceptable, consulta la sección sobre sintaxis RE2.
    • Configuración: Selecciona el archivo de configuración de compilación ubicado en tu repositorio remoto o crea un archivo de configuración de compilación intercalado para usarlo en tu compilación.

      • Tipo: Selecciona el tipo de configuración que usarás para la compilación.
        • Archivo de configuración de Cloud Build (YAML o JSON): Usa un archivo de configuración de compilación para la configuración.
        • Dockerfile: Usa Dockerfile para la configuración.
        • Paquetes de compilación: Usa paquetes de compilación para tu configuración.
      • Ubicación: Especifica la ubicación de tu configuración.

        • Repositorio: Si el archivo de configuración se encuentra en el repositorio remoto, proporciona la ubicación del archivo de configuración de compilación, el directorio Dockerfile o el directorio de paquetes de compilación. Si el tipo de configuración de compilación es Dockerfile o un paquete de compilación, deberás proporcionar un nombre para la imagen resultante y, de forma opcional, un tiempo de espera para tu compilación. Cuando proporciones el Dockerfile o el nombre de la imagen del paquete de compilación, verás una vista previa del comando docker build o pack que ejecutará tu compilación.
        • Variables de entorno de paquete de compilación (opcional): Si seleccionaste buildpacks como el tipo de configuración, haz clic en Agregar variable de entorno del paquete para especificar las variables de entorno y los valores del paquete de compilación. Para obtener más información sobre las variables de entorno del paquete de compilación, consulta Variables de entorno.
        • En línea: Si seleccionaste Archivo de configuración de Cloud Build (YAML o JSON) como tu opción de configuración, puedes especificar tu configuración de la compilación de forma intercalada. Haz clic en Abrir editor para escribir tu archivo de configuración de compilación en la consola de Google Cloud con la sintaxis YAML o JSON. Haz clic en Listo para guardar la configuración de tu compilación.

    • Cuenta de servicio: Selecciona la cuenta de servicio que se usará para invocar el activador. Si no seleccionas una cuenta de servicio, se usa la cuenta de servicio de Cloud Build predeterminada.

  6. Haz clic en Crear para guardar el activador de compilación.

gcloud

Ejecuta el siguiente comando:

    gcloud beta builds triggers create cloud-source-repositories \
    --repo=REPO_NAME \
    --branch-pattern=BRANCH_PATTERN \ # or --tag-pattern=TAG_PATTERN
    --build-config=BUILD_CONFIG_FILE \
    --service-account=SERVICE_ACCOUNT \
    --require-approval

Donde:

  • REPO_NAME es el nombre del repositorio.
  • BRANCH_PATTERN es el nombre de la rama en tu repositorio para invocar la compilación.
  • TAG_PATTERN es el nombre de la etiqueta en tu repositorio para invocar la compilación.
  • BUILD_CONFIG_FILE es la ruta de acceso al archivo de configuración de compilación.
  • SERVICE_ACCOUNT (vista previa) es el correo electrónico asociada a tu cuenta de servicio. Si no incluyes esta marca, se usa la cuenta de servicio predeterminada de Cloud Build.
  • [Opcional] --require-approval es la marca que se debe incluir para configurar el activador a fin de que requiera aprobación.

Si deseas obtener una lista completa de las marcas, consulta la referencia de gcloud sobre cómo crear activadores para Cloud Source Repositories.

Después de ejecutar el comando gcloud para crear un activador con Cloud Source Repositories, deberías ver un resultado similar al siguiente:

  NAME         CREATE_TIME                STATUS
  trigger-001  2019-10-30T20:45:03+00:00

Ver activadores de compilación

Para ver los activadores en Google Cloud Console, abre la página Activadores de Cloud Build.

Para ver los activadores de un proyecto determinado en Cloud Source Repositories, haz clic en Configuración en la esquina superior derecha y, luego, haz clic en Activadores de Cloud Build.

Omite un activador de compilación

En algunos casos, es posible que desees modificar el código fuente sin que se active una compilación (por ejemplo, cuando actualizas la documentación o los archivos de configuración).

En esos casos, puedes incluir [skip ci] o [ci skip] en el mensaje de confirmación para que no se active una compilación.

Por ejemplo:

Author: A User <auser@example.com>
Date:   Tue Apr 3 12:03:35 2018 -0700

Fixed customer affecting issue. [skip ci]

Si quieres ejecutar una compilación en esa confirmación más tarde, usa el botón Ejecutar activador.

Crea clones no superficiales

Para compilar tu código fuente en un repositorio de Git, Cloud Source Repositories realiza una clonación superficial del repositorio. Esto significa que se extrae del espacio de trabajo solo la confirmación individual que activó la compilación y, luego, compila sobre la base de ese código fuente. Cloud Source Repositories no extrae ninguna otra rama o parte del historial. Esto se hace por motivos de eficiencia. De este modo, se evitan demoras en la compilación, ya que Cloud Source Repositories no necesita recuperar el repositorio y el historial en su totalidad para compilar a partir de una única confirmación.

Si deseas incluir más elementos del historial de tu repositorio en la compilación, agrega un paso a tu archivo de configuración para que la clonación deje de ser superficial. Por ejemplo:

steps:
- name: gcr.io/cloud-builders/git
  args: ['fetch', '--unshallow']
...

Para obtener más información sobre git fetch, consulta la referencia de git. Si deseas obtener instrucciones para escribir un archivo de configuración de compilación, consulta la Descripción general de la configuración de compilación.

¿Qué sigue?