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 para personas. Bazel admite proyectos en varios lenguajes y compila resultados para varias plataformas. Bazel admite grandes bases de código 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 personas para describir las propiedades de compilación de tu proyecto en un nivel semántico alto. A diferencia de otras herramientas, Bazel opera 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 a herramientas como compiladores y enlazadores.
Bazel es rápido y confiable. Bazel almacena en caché todo el trabajo realizado anteriormente y hace un seguimiento de los cambios en el contenido del archivo y en los comandos de compilación. De esta manera, Bazel sabe cuándo se debe volver a compilar algo y solo lo hace. Para acelerar aún más las compilaciones, puedes configurar tu proyecto para que se compile de forma incremental y altamente paralela.
Bazel es multiplataforma. Bazel se ejecuta en Linux, macOS y Windows. Bazel puede compilar objetos binarios y paquetes implementables para varias plataformas, incluidas computadoras de escritorio, servidores y dispositivos móviles, desde el mismo proyecto.
Bazel se adapta. Bazel mantiene la agilidad mientras controla compilaciones con más de 100,000 archivos fuente. Funciona con varios repositorios y bases de usuarios de decenas de miles.
Bazel es extensible. Se admiten muchos lenguajes y puedes extender Bazel para admitir cualquier otro lenguaje o framework.
Usa Bazel
Para compilar o probar un proyecto con Bazel, por lo general, debes hacer lo siguiente:
Configura Bazel. Descarga e instala Bazel.
Configura un espacio de trabajo del proyecto, que es un directorio en el que Bazel busca entradas de compilación y archivos
BUILD, y donde almacena los resultados de la compilación.Escribe un archivo
BUILD, que le indica a Bazel qué compilar y cómo hacerlo.Para escribir el archivo
BUILD, debes declarar destinos de compilación con Starlark, un lenguaje específico del dominio. (Consulta el ejemplo aquí).Un destino de compilación especifica un conjunto de artefactos de entrada que Bazel compilará, además de sus dependencias, la regla de compilación que Bazel usará para compilarlo y las opciones que configuran la regla de compilación.
Una regla de compilación especifica las herramientas de compilación que usará Bazel, como compiladores y enlazadores, y sus configuraciones. Bazel incluye varias reglas de compilación que abarcan los tipos de artefactos más comunes en los lenguajes admitidos en las plataformas compatibles.
Ejecuta Bazel desde la línea de comandos. Bazel coloca tus resultados en el espacio de trabajo.
Además de la compilación, también puedes usar Bazel para ejecutar pruebas y consultar la compilación para rastrear dependencias en tu código.
Proceso de compilación de Bazel
Cuando se ejecuta una compilación o una prueba, Bazel hace lo siguiente:
Carga los archivos
BUILDrelevantes para el destino.Analiza las entradas y sus dependencias, aplica las reglas de compilación especificadas y produce un gráfico de acciones.
Ejecuta las acciones de compilación en las entradas hasta que se produzcan los resultados de la compilación final.
Como todo el trabajo de compilación anterior se almacena en caché, Bazel puede identificar y reutilizar los artefactos almacenados en caché, y solo volver a compilar o probar lo que cambió. Para aplicar aún más la exactitud, puedes configurar Bazel para que ejecute compilaciones y pruebas de forma hermética a través de la zona de pruebas, lo que minimiza la distorsión y maximiza la reproducibilidad.
Gráfico de acciones
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, así como de los cambios en las acciones, como los comandos de compilación o prueba, y saber qué trabajo de compilación se realizó anteriormente. El gráfico también te permite rastrear fácilmente las dependencias en tu código.
Instructivos para comenzar
Para comenzar a usar Bazel, consulta Comienza o ve directamente a los instructivos de Bazel: