Descripción general de Cloud Build

Cloud Build es un servicio que ejecuta tus compilaciones en Google Cloud.

Cloud Build puede importar un código fuente desde varios repositorios o espacios de Cloud Storage, ejecutar una compilación según tus especificaciones y producir artefactos como contenedores de Docker o archivos de Java.

Configuración de compilación y pasos de compilación

Puedes escribir una configuración de la compilación para proporcionar instrucciones a Cloud Build sobre qué tareas realizar. Puedes configurar compilaciones para recuperar dependencias, ejecutar pruebas de unidades, realizar análisis de estadísticas y pruebas de integración y crear artefactos con herramientas de compilación como Docker, Gradle, Maven, Bazel y Gulp.

Cloud Build ejecuta tu compilación como una serie de pasos de la compilación, en los que cada paso de la compilación se ejecuta en un contenedor de Docker. La ejecución de pasos de compilación es análoga a la ejecución de comandos en una secuencia de comandos.

Puedes usar los pasos de compilación proporcionados por Cloud Build y la comunidad de Cloud Build o escribir tus propios pasos de compilación personalizados:

Cada paso de compilación se ejecuta con su contenedor conectado a una red de Docker local llamada cloudbuild. Eso permite que los pasos de compilación se comuniquen entre sí y compartan datos. Para obtener más información sobre la red cloudbuild, consulta Red de Cloud Build.

Puedes usar imágenes estándar de Docker Hub en Cloud Build, como Ubuntu y Gradle.

Inicia compilaciones

Puedes iniciar compilaciones de forma manual en Cloud Build con Google Cloud CLI o la API de Cloud Build, o usar los activadores de compilación de Cloud Build para crear un flujo de trabajo de integración continua/entrega continua (CI/CD) que inicie compilaciones nuevas en respuesta a cambios de código.

Puedes integrar activadores de compilación en varios repositorios de código, incluidos Cloud Source Repositories, GitHub, y Bitbucket.

Visualiza los resultados de las compilaciones

Puedes ver los resultados de tu compilación con la CLI de gcloud, la API de Cloud Build o la página Historial de compilaciones en la sección Cloud Build en Console, que muestra detalles y registros para cada compilación que ejecuta Cloud Build. Para obtener instrucciones, consulta Visualiza resultados de compilación.

Cómo funcionan las compilaciones

En los pasos siguientes, se brinda una descripción general del ciclo de vida de una compilación de Cloud Build:

  1. Prepara tu código de aplicación y cualquier elemento necesario.
  2. Crea un archivo de configuración de la compilación en formato YAML o JSON, que incluya instrucciones para Cloud Build.
  3. Envía la compilación a Cloud Build.
  4. Cloud Build ejecuta la compilación según la configuración de la compilación que proporcionaste.
  5. Si corresponde, los artefactos compilados se envían a Artifact Registry.

Docker

Cloud Build usa Docker para ejecutar compilaciones. Para cada paso de compilación, Cloud Build ejecuta un contenedor de Docker como una instancia de docker run. En la actualidad, Cloud Build ejecuta la versión 20.10.17 del motor de Docker.

Interfaces de Cloud Build

Puedes usar Cloud Build con Google Cloud Console, la herramienta de línea de comandos de gcloud o la API de REST de Cloud Build.

En la consola, puedes ver los resultados de compilación de Cloud Build en la página Historial de compilaciones y automatizar compilaciones en Activadores de compilación.

Puedes usar la CLI de gcloud para crear y administrar compilaciones. Puedes ejecutar comandos para realizar tareas como enviar una compilación, crear una lista de compilaciones y cancelar una compilación.

Puedes solicitar compilaciones mediante la API de REST de Cloud Build.

De la misma manera que con otras API de Cloud Platform, debes autorizar el acceso con OAuth2. Después de autorizar el acceso, puedes usar la API para iniciar compilaciones nuevas, ver el estado y los detalles de la compilación, hacer una lista de compilaciones por proyecto y cancelar compilaciones que están en proceso en ese momento.

Para obtener más información, consulta la documentación de la API.

Grupos predeterminados y grupos privados

De forma predeterminada, cuando ejecutas una compilación en Cloud Build, esta se ejecuta en un entorno alojado y seguro con acceso a la Internet pública. Cada compilación se ejecuta en su propio worker y está aislada de otras cargas de trabajo. Puedes personalizar la compilación de varias maneras, como aumentar el tamaño del tipo de máquina o asignar más espacio en el disco. El grupo predeterminado tiene límites sobre cuánto puedes personalizar el entorno, en particular en el acceso a la red privada.

Los grupos privados son grupos privados y dedicados de trabajadores que ofrecen una mayor personalización en el entorno de compilación, incluida la capacidad de acceder a los recursos en una red privada. Cloud Build aloja y administra los grupos privados de forma similar a los grupos predeterminados. Además, Cloud Build los administra por completo, además de aumentar o disminuir la escala a cero, sin necesidad de configurar, actualizar ni escalar ningún infraestructura. Debido a que los grupos privados son recursos específicos del cliente, puedes configurarlos de más maneras.

Para obtener más información sobre los grupos privados y la diferencia de características entre los grupos predeterminados y los privados, consulta Descripción general de los grupos privados.

Crea seguridad

Cloud Build proporciona varias funciones para proteger tus compilaciones, incluidas las siguientes:

  • Compilaciones automatizadas

    Una compilación automatizada o una secuencia de comandos define todos los pasos de la compilación o la configuración, incluidos los pasos para recuperar el código fuente y los que se deben compilar. El único comando manual, si existe alguno, es el comando para ejecutar la compilación. Cloud Build usa un archivo de configuración de compilación para proporcionar pasos de compilación a Cloud Build.

    Las compilaciones automatizadas proporcionan coherencia en los pasos de compilación. Sin embargo, también es importante ejecutar compilaciones en un entorno coherente y confiable.

    Aunque las compilaciones locales pueden ser útiles para fines de depuración, lanzar software a partir de compilaciones locales puede generar una gran cantidad de problemas de seguridad, inconsistencias e ineficiencias en el proceso de compilación.

    • Permitir las compilaciones locales proporciona un método para que un atacante con una intención maliciosa modifique el proceso de compilación.
    • Las inconsistencias en los entornos locales y las prácticas del desarrollador hacen que sea difícil reproducir compilaciones y diagnosticar problemas de compilación.

    En los requisitos del framework de SLSA, las compilaciones automatizadas son un requisito para el nivel 1 de SLSA y el uso de un servicio de compilación en lugar de los entornos de desarrollador es un requisito para el nivel 2 de SLSA.

  • Origen de la compilación

    La procedencia de la compilación es un conjunto de datos verificables sobre una compilación.

    Los metadatos de procedencia incluyen detalles como los resúmenes de las imágenes compiladas, las ubicaciones de origen de entrada, la cadena de herramientas de compilación y la duración de la compilación.

    Generar procedencia de compilación te permite:

    • Verifica que un artefacto de compilación se haya creado a partir de una ubicación de origen confiable y de un sistema de compilación confiable.
    • Identifica el código que se insertó desde una ubicación de origen no confiable o un sistema de compilación.

    Puedes usar mecanismos de alertas y políticas para usar de forma proactiva los datos de origen de compilación. Por ejemplo, puedes crear políticas que solo permitan implementaciones de código compiladas a partir de fuentes verificadas.

    Cloud Build puede generar una fuente de compilación para imágenes de contenedor que proporcionan una garantía de nivel 2 de SLSA. Para obtener más información, consulta Cómo ver la procedencia de la compilación.

  • Entorno de compilación efímero

    Los entornos efímeros son entornos temporales que están diseñados para durar una sola invocación de compilación. Después de la compilación, se borra o borra el entorno. Las compilaciones efímeras garantizan que el servicio de compilación y los pasos de compilación se ejecuten en un entorno efímero, como un contenedor o una VM. En lugar de reutilizar un entorno de compilación existente, el servicio de compilación aprovisiona un entorno nuevo para cada compilación y, luego, lo destruye después de que se completa el proceso de compilación.

    Los entornos efímeros garantizan compilaciones limpias, ya que no hay archivos residuales ni configuraciones del entorno de compilaciones anteriores que puedan interferir en el proceso de compilación. Un entorno no efímero brinda una oportunidad para que los atacantes inserten archivos y contenido maliciosos. Un entorno efímero también reduce la sobrecarga de mantenimiento y las inconsistencias en el entorno de compilación.

    Cloud Build configura un entorno de máquina virtual nuevo para cada compilación y lo destruye después de esta.

  • Políticas de implementación

    Puedes integrar Cloud Build con la autorización binaria para verificar las certificaciones de compilación y bloquear las implementaciones de imágenes que no genera Cloud Build. Este proceso puede reducir el riesgo de implementar software no autorizado.

  • Claves de encriptación administradas por el cliente

    Cloud Build proporciona el cumplimiento de claves de encriptación administradas por el cliente (CMEK) de forma predeterminada. Los usuarios no necesitan configurar nada específico. Cloud Build proporciona cumplimiento de CMEK mediante la encriptación del disco persistente (PD) en tiempo de compilación con una clave efímera que se genera para cada compilación. La clave se genera de forma única para cada compilación.

    En cuanto se completa la compilación, la clave se limpia de la memoria y se destruye. No se almacena en ningún lugar, no es accesible para los ingenieros de Google ni el personal de asistencia y no se puede restablecer. No se podrá acceder de forma permanente a los datos que se protegieron con esa clave. Para obtener más información, consulta Cumplimiento de CMEK en Cloud Build.

¿Qué sigue?