Introducción a Bazel

Informa un problema Ver código fuente

Bazel es una herramienta de compilación y prueba de código abierto similar a Make, Maven y Gradle. Usa un lenguaje de compilación de alto nivel, legible por personas. Bazel admite proyectos en varios lenguajes y compila resultados para varias plataformas. Bazel admite bases de código grandes en varios repositorios y una gran cantidad de usuarios.

Beneficios

Bazel ofrece las siguientes ventajas:

  • Lenguaje de compilación de alto nivel. Bazel usa un lenguaje abstracto y legible para describir las propiedades de compilación de tu proyecto en un nivel semántico alto. A diferencia de otras herramientas, Bazel funciona en los conceptos de bibliotecas, objetos binarios, secuencias de comandos y conjuntos de datos, lo que te protege de la complejidad de escribir llamadas individuales en herramientas como compiladores y vinculadores.

  • Bazel es rápido y confiable. Bazel almacena en caché todo el trabajo realizado previamente y realiza un seguimiento de los cambios en el contenido del archivo y los comandos de compilación. De esta manera, Bazel sabe cuándo se debe reconstruir algo y solo lo reconstruye. A fin de acelerar más tus compilaciones, puedes configurar tu proyecto para que se compile de forma incremental y muy paralela.

  • Bazel funciona en varias plataformas. Bazel se ejecuta en Linux, macOS y Windows. Bazel puede compilar objetos binarios y paquetes implementables para varias plataformas, incluidos computadoras de escritorio, servidores y dispositivos móviles, desde el mismo proyecto.

  • Escalamiento de bazel. Bazel mantiene la agilidad mientras maneja las compilaciones con más de 100,000 archivos de origen. Funciona con varios repositorios y bases de usuarios en decenas de miles.

  • Bazel es extensible. Se admiten muchos idiomas, y puedes extender Bazel para que admita cualquier otro lenguaje o framework.

Usa Bazel

Para compilar o probar un proyecto con Bazel, por lo general, debes hacer lo siguiente:

  1. Configura Bazel. Descarga e instala Bazel.

  2. Configura un lugar de trabajo de proyecto, que es un directorio en el que Bazel busca entradas de compilación y archivos BUILD, y donde almacena resultados de compilación.

  3. Escribe un archivo BUILD, que le indique a Bazel qué compilar y cómo hacerlo.

    Para escribir tu archivo BUILD, declara los destinos de compilación mediante Starlark, un lenguaje específico del dominio. (Consulta el ejemplo aquí).

    Un destino de compilación especifica un conjunto de artefactos de entrada que compilará Bazel, más sus dependencias, la regla de compilación que Bazel usará para compilarla y las opciones que configuran la regla de compilación.

    Una regla de compilación especifica las herramientas de compilación que Bazel usará, como compiladores y vinculadores, y sus configuraciones. Bazel se envía con una serie de reglas de compilación que abarcan los tipos de artefactos más comunes en los lenguajes compatibles en plataformas compatibles.

  4. Ejecuta Bazel desde la línea de comandos. Bazel coloca tus resultados dentro del lugar de trabajo.

Además de compilar, también puedes usar Bazel para ejecutar pruebas y consultar la compilación a fin de hacer un seguimiento de las dependencias de tu código.

Proceso de compilación de Bazel

Cuando ejecutes una compilación o una prueba, Bazel hará lo siguiente:

  1. Carga los archivos BUILD relevantes para el destino.

  2. Analiza las entradas y sus dependencias, aplica las reglas de compilación especificadas y produce un grafo de acción.

  3. Ejecuta las acciones de compilación en las entradas hasta que se produzcan los resultados de compilación finales.

Dado que todo el trabajo de compilación anterior se almacena en caché, Bazel puede identificar y reutilizar artefactos almacenados en caché y solo volver a compilar o probar lo que cambió. A fin de aplicar la corrección aún más, puedes configurar Bazel para ejecutar compilaciones y pruebas de forma hermética mediante la zona de pruebas, lo que minimiza el sesgo y maximiza la reproducibilidad.

Gráfico de acción

El gráfico de acciones representa los artefactos de compilación, las relaciones entre ellos y las acciones de compilación que realizará Bazel. Gracias a este gráfico, Bazel puede hacer un seguimiento de los cambios en el contenido del archivo y en las acciones, como los comandos de compilación o de prueba, y saber qué trabajo de compilación se realizó anteriormente. El gráfico también te permite realizar un seguimiento fácilmente de las dependencias en tu código.

Instructivos para comenzar

Para comenzar a usar Bazel, consulta Comienza o ve directamente a los instructivos de Bazel: