¿Por qué Bazel?

Informar un problema Ver código fuente Nightly · 8.0 7.4 . 7.3 · 7.2 · 7.1 · 7.0 · 6.5

Bazel es una herramienta de compilación rápida, correcta y expandible con pruebas integradas que admite varios lenguajes, repositorios y plataformas en un ecosistema líder en la industria.

Bazel es rápido

Bazel sabe exactamente qué archivos de entrada necesita cada comando de compilación, lo que evita el trabajo innecesario, ya que se vuelve a ejecutar solo cuando cambia el conjunto de archivos de entrada entre cada compilación. Ejecuta comandos de compilación con el mayor paralelismo posible, ya sea dentro de la misma computadora o en nodos de compilación remotos. Si la estructura de compilación lo permite, puede ejecutar miles de comandos de compilación o prueba al mismo tiempo.

Esto es compatible con varias capas de almacenamiento en caché, en la memoria, en el disco y en la granja de compilación remota, si está disponible. En Google, alcanzamos tasas de acierto de caché superiores al 99% con frecuencia.

Bazel es correcto

Bazel garantiza que tus objetos binarios se compilen solo a partir de tu código fuente. Las acciones de Bazel se ejecutan en zonas de pruebas individuales, y Bazel realiza un seguimiento de cada archivo de entrada de la compilación y solo vuelve a ejecutar los comandos de compilación cuando es necesario. Esto mantiene tus objetos binarios actualizados para que el mismo código fuente siempre genere el mismo objeto binario, bit a bit.

Di adiós a las invocaciones make clean interminables y a la búsqueda de errores fantasma que, en realidad, se resolvieron en el código fuente que nunca se compiló.

Bazel es extensible

Aprovecha toda la potencia de Bazel escribiendo tus propias reglas y macros para personalizarlo según tus necesidades específicas en una amplia variedad de proyectos.

Las reglas de Bazel están escritas en Starlark, nuestro lenguaje de programación interno que es un subconjunto de Python. Starlark hace que la escritura de reglas sea accesible para la mayoría de los desarrolladores y, al mismo tiempo, crea reglas que se pueden usar en todo el ecosistema.

Pruebas integradas

El ejecutor de pruebas integrado de Bazel solo conoce y ejecuta las pruebas que deben volver a ejecutarse, con la ejecución remota (si está disponible) para ejecutarlas en paralelo. Detecta los errores de forma anticipada con la ejecución remota para ejecutar una prueba rápidamente miles de veces.

Bazel proporciona herramientas para subir los resultados de las pruebas a una ubicación central, lo que facilita la comunicación eficiente de los resultados de las pruebas, ya sea en CI o por parte de desarrolladores individuales.

Compatibilidad con diferentes lenguajes

Bazel admite muchos lenguajes de programación comunes, incluidos C++, Java, Kotlin, Python, Go y Rust. Puedes compilar varios objetos binarios (por ejemplo, backend, IU web y app para dispositivos móviles) en la misma invocación de Bazel sin estar limitado a la herramienta de compilación idiomática de un lenguaje.

Compatibilidad con varios repositorios

Bazel puede recopilar código fuente de varias ubicaciones: no necesitas vender tus dependencias (pero puedes hacerlo). En su lugar, puedes indicarle a Bazel la ubicación de tu código fuente o artefactos precompilados (p. ej., un repositorio de git o Maven Central), y se encargará del resto.

Compatibilidad multiplataforma

Bazel puede compilar proyectos de forma simultánea para varias plataformas, como Linux, macOS, Windows y Android. También proporciona poderosas funciones de compilación cruzada para compilar código para una plataforma mientras se ejecuta la compilación en otra.

Ecosistema amplio

A los líderes de la industria les encanta Bazel, y están creando una gran comunidad de desarrolladores que usan Bazel y contribuyen a él. Encuentra herramientas, servicios y documentación, incluidas las ofertas de consultoría y SaaS que puede usar Bazel. Explora extensiones, como la compatibilidad con lenguajes de programación, en nuestros repositorios de software de código abierto.