Automatizar compilaciones con Cloud Build

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

Puedes configurar Cloud Build para que compile automáticamente una imagen nueva cada vez que un usuario envíe 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 ayudarte a asegurarte de que tus imágenes de contenedor estén actualizadas. También puedes usarlas para crear y probar ramas de funciones.

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

Usar un Dockerfile

Para usar un Dockerfile en tu configuración de compilación, debes especificar el directorio de Dockerfile y proporcionar un nombre para la imagen resultante. Para obtener más información sobre cómo crear archivos Dockerfile, consulta la documentación de Docker.

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

Usar un archivo de configuración de compilación

Para usar un archivo de configuración de compilación en tu configuración de compilación, debes proporcionar la ubicación de un archivo de configuración de compilación.

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

Antes de empezar

Información adicional

  • Los activadores de compilación usan clones superficiales de un repositorio. Con las copias superficiales, solo se extrae en el espacio de trabajo la única confirmación que ha activado una compilación automática. Para obtener más información y saber cómo incluir más historial de tus repositorios, consulta Clonaciones no superficiales.

  • Si usas otro proveedor de Git alojado, como GitHub o Bitbucket, y sigues necesitando duplicar el repositorio en Cloud Source Repositories, debes tener el permiso cloudbuilds.builds.create para el Google Cloud proyecto con el que estés trabajando. Este permiso se suele conceder a través del rol cloudbuild.builds.editor.

    Cuando configures un activador de compilación con un repositorio externo por primera vez, tendrás que configurar la autorización con ese repositorio. Para obtener más información, consulta Añadir un repositorio como remoto.

    Una vez que hayas configurado tu repositorio externo, Cloud Source Repositories creará una réplica de tu repositorio.

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

Crear un activador de compilación

Consola

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

    Abre la página Activadores.

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

  3. Haz clic en Abrir.

  4. Haz clic en Crear activador.

  5. Introduce los siguientes ajustes del activador:

    • Nombre: introduce un nombre para el activador.

    • Descripción (opcional): escribe una descripción del activador.

    • Evento: selecciona el evento del repositorio para invocar el activador.

      • Enviar a una rama: configura el activador para iniciar una compilación en las confirmaciones de una rama concreta.

      • Enviar nueva etiqueta: configura el activador para que inicie una compilación en las confirmaciones que contengan una etiqueta concreta.

    • Fuente: selecciona el repositorio y la rama o etiqueta correspondientes para detectar eventos.

      Cuando se ejecute tu compilación, el contenido de tu repositorio se copiará en /workspace, el directorio de trabajo predeterminado que usa Cloud Build. Consulta 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 el valor de la rama o de la etiqueta que quieras que coincida. No se pueden usar barras diagonales (/) en las etiquetas. Para obtener más información sobre la sintaxis válida de las expresiones regulares, consulta la sintaxis de 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 insertado para usarlo en tu compilación.

      • Tipo: selecciona el tipo de configuración que quieras usar en tu compilación.
        • Archivo de configuración de Cloud Build (yaml o json): usa un archivo de configuración de compilación para tu configuración.
        • Dockerfile usa un Dockerfile para tu configuración.
        • Paquetes de compilación: usa paquetes de compilación para tu configuración.
      • Ubicación: especifica la ubicación de la configuración.

        • Repositorio: si el archivo de configuración se encuentra en tu repositorio remoto, indica 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, tendrás que proporcionar un nombre para la imagen resultante y, opcionalmente, un tiempo de espera para la compilación. Cuando hayas proporcionado el nombre de la Dockerfile o de la imagen del buildpack, verás una vista previa del comando docker build o pack que ejecutará tu compilación.
        • Variables de entorno de buildpack (opcional): si has seleccionado buildpacks como tipo de configuración, haz clic en Añadir variable de entorno de paquete para especificar las variables de entorno y los valores de tu buildpack. Para obtener más información sobre las variables de entorno de los paquetes de compilación, consulte Variables de entorno.
        • En línea: si has seleccionado Archivo de configuración de Cloud Build (yaml o json) como opción de configuración, puedes especificar la configuración de compilación en línea. Haz clic en Abrir editor para escribir el archivo de configuración de la compilación en la consolaGoogle Cloud con la sintaxis YAML o JSON. Haz clic en Hecho para guardar la configuración de compilación.

    • Cuenta de servicio: selecciona la cuenta de servicio que quieras usar al invocar el activador. Si no seleccionas ninguna cuenta de servicio, se usará 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 de tu repositorio.
  • BRANCH_PATTERN es el nombre de la rama de tu repositorio en la que se invoca la compilación.
  • TAG_PATTERN es el nombre de la etiqueta de tu repositorio para invocar la compilación.
  • BUILD_CONFIG_FILE es la ruta a tu archivo de configuración de compilación.
  • SERVICE_ACCOUNT (vista previa) es el correo asociado a tu cuenta de servicio. Si no incluyes esta marca, se usará la cuenta de servicio de Cloud Build predeterminada.
  • [Opcional] --require-approval es la marca que debes incluir para configurar tu activador para que requiera aprobación.

Para ver 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 la Google Cloud consola, abre la página Activadores de Cloud Build.

Para ver los activadores de un proyecto determinado en Cloud Source Repositories, haga clic en Configuración en la parte superior derecha y, a continuación, en Activadores de Cloud Build.

Omitir un activador de compilación

En algunos casos, puede que quieras cambiar el código fuente, pero no quieras activar una compilación. Por ejemplo, cuando actualizas archivos de documentación o de configuración.

En estos casos, puedes incluir [skip ci] o [ci skip] en el mensaje de confirmación, y no se activará ninguna 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 adelante, usa el botón Ejecutar activador.

Desactivar la clonación superficial

Para compilar tu fuente en un repositorio de Git, Cloud Source Repositories realiza una clonación superficial del repositorio. Cuando Cloud Source Repositories realiza una clonación superficial, solo extrae del espacio de trabajo la única confirmación que ha activado la compilación y, a continuación, compila a partir de ese origen. Cloud Source Repositories no extrae ninguna otra rama ni historial. Esto se hace por eficiencia. Las compilaciones no se retrasan mientras Cloud Source Repositories obtiene todo el repositorio y el historial solo para compilar a partir de una única confirmación.

Para incluir más historial de tu repositorio en la compilación, añade un paso de compilación en el archivo de configuración de la compilación para "desprofundizar" la clonación. 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. Para obtener instrucciones sobre cómo escribir un archivo de configuración de compilación, consulta la descripción general de la configuración de compilación.

Siguientes pasos