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 tus imágenes de contenedor 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 más 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

Para usar un archivo de configuración de compilación para tu configuración de compilación, deberás 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

Console

  1. Abre la página Activadores en Google Cloud Console.

    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 más información sobre la sintaxis aceptable de expresión regular, consulta 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 usar en tu compilación.

      • Type: Selecciona el tipo de configuración que se usará para tu 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.
        • Buildpacks: Usa buildpacks para la configuración.
      • Ubicación: Especifica la ubicación para tu configuración.

        • Repositorio Si el archivo de configuración se encuentra en el repositorio remoto, proporciona la ubicación de tu archivoarchivo de configuración de la compilación , elDockerfile o al directorio de paquetes de compilación. Si tu 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, opcionalmente, un tiempo de espera para tu compilación. Cuando hayas proporcionado el nombre de la imagen de Dockerfile o del paquete de compilación, obtendrás una vista previa del comando docker build o pack que ejecutará la compilación.
        • Variables de entorno del paquete de compilación Si seleccionastebuildpacks Como tipo de configuración, haz clic enAgregar variable de entorno de paquete para especificar las variables y los valores del entorno de compilación del paquete. Para obtener más información sobre las variables de entorno de compilación, consulta Variables de entorno.
        • Intercalada: Si seleccionaste archivo de configuración de Cloud Build (YAML o JSON) como opción de configuración, puedes especificar la configuración de compilación intercalada. Haz clic en Abrir editor para abrir tu archivo de configuración de compilación en Google Cloud Console mediante 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á cuando se invoque 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

Aquí:

  • 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 el 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 asociado a tu cuenta de servicio. Si no incluyes esta marca, se usa la cuenta de servicio de Cloud Build predeterminada.
  • --require-approval es la marca que se debe incluir a fin de configurar el activador para que requiera aprobación (opcional).

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 mediante 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?