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 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 solo se vuelve a ejecutar cuando el conjunto de archivos de entrada cambió 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 servidores de compilación remota, si está disponible. En Google, alcanzamos de forma rutinaria tasas de aciertos de caché superiores al 99%.
Bazel es correcto
Bazel garantiza que tus objetos binarios se compilen solo a partir de tu propio código fuente. Las acciones de Bazel se ejecutan en entornos de pruebas individuales, y Bazel hace un seguimiento de cada archivo de entrada de la compilación, solo y siempre vuelve a ejecutar los comandos de compilación cuando es necesario. Esto mantiene actualizados tus objetos binarios para que el mismo código fuente siempre dé como resultado el mismo objeto binario, bit por bit.
Despídete de las invocaciones interminables de make clean y de la búsqueda de errores fantasma
que, de hecho, 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 personalizar Bazel para tus necesidades específicas en una amplia variedad de proyectos.
Las reglas de Bazel se escriben 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 pueden usarse en todo el ecosistema.
Pruebas integradas
El ejecutor de pruebas integrado de Bazel conoce y ejecuta solo las pruebas que deben volver a ejecutarse, mediante la ejecución remota (si está disponible) para ejecutarlas en paralelo. Detecta las fallas de forma temprana con la ejecución remota para ejecutar una prueba miles de veces rápidamente.
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 desarrolladores individuales.
Compatibilidad con diferentes idiomas
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 cambio, puedes dirigir Bazel a la ubicación de tu código fuente o artefactos precompilados (p. ej., un repositorio de Git o Maven Central), y se encarga del resto.
Compatibilidad con varias plataformas
Bazel puede compilar proyectos de forma simultánea para varias plataformas, incluidas Linux, macOS, Windows y Android. También proporciona potentes capacidades 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, ya que crean una gran comunidad de desarrolladores que usan Bazel y contribuyen a él. Encuentra herramientas, servicios y documentación, incluidas ofertas de consultoría y SaaS que Bazel puede usar. Explora extensiones como la compatibilidad con lenguajes de programación en nuestros repositorios de software de código abierto.