¿Por qué Bazel?

Informar un problema Ver fuente

Bazel es una herramienta de compilación rápida, correcta y extensible con pruebas integradas que admite varios lenguajes, repositorios y plataformas en un ecosistema líder de 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 vuelve a ejecutarlo solo cuando el conjunto de archivos de entrada cambia 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 de 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, normalmente alcanzamos tasas de aciertos de caché del 99%.

Bazel es correcto

Bazel garantiza que tus objetos binarios solo se compilen a partir de tu propio 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, solo y vuelve a ejecutar siempre los comandos de compilación cuando sea necesario. Esto mantiene tus objetos binarios actualizados para que el mismo código fuente siempre dé como resultado el mismo objeto binario, bit a bit.

Di Goodbyte a las infinitas invocaciones de make clean y a la persecución de errores fantasmas que de hecho se resolvieron en el código fuente que nunca se compiló.

Bazel es extensible

A fin de aprovechar toda la potencia de Bazel, escribe tus propias reglas y macros a fin de personalizar Bazel para tus necesidades específicas en una amplia gama de proyectos.

Las reglas de Bazel se escriben en Starlark, nuestro lenguaje de programación interno que es un subconjunto de Python. Starlark permite que la redacción 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 reconoce y ejecuta solo las pruebas que se deben volver a ejecutar. Para ello, usa la ejecución remota (si está disponible) en paralelo. Detecta las vulnerabilidades con anticipación mediante la ejecución remota para ejecutar una prueba con rapidez miles de veces.

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

Compatibilidad con diferentes lenguajes

Bazel es compatible con muchos lenguajes de programación comunes, incluidos C++, Java, Kotlin, Python, Go y Rust. Puedes compilar varios objetos binarios (por ejemplo, backend, la IU web y la app para dispositivos móviles) en la misma invocación de Bazel sin limitarte 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 proveedor de tus dependencias (pero sí puedes hacerlo); en su lugar, puedes dirigir Bazel a la ubicación de tu código fuente o artefactos compilados previamente (p.ej., un repositorio de Git o Maven Central), y se encargará del resto.

Compatibilidad multiplataforma

Bazel puede compilar proyectos simultáneamente para varias plataformas, como Linux, macOS, Windows y Android. También proporciona potentes capacidades de compilación cruzada a fin de 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, ya que compila una gran comunidad de desarrolladores que usan Bazel y contribuyen a ella. Encuentra herramientas, servicios y documentación, incluidas las ofertas de asesoramiento y SaaS que Bazel puede usar. Explora las extensiones, como la compatibilidad con lenguajes de programación, en nuestros repositorios de software de código abierto.