¿Por qué Bazel?

Informar un problema . Ver fuente . Por la noche · 7.2 · 7.1 · 7.0 · 6.5 · 6.4

Bazel es una herramienta rápida, correcta y extensible. de compilación con pruebas integradas que admite varias idiomas, 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 un trabajo innecesario y volver a ejecutarlo solo cuando el conjunto de archivos de entrada cambian entre cada compilación. Ejecuta los comandos de compilación con el mayor paralelismo posible, ya sea dentro del 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 múltiples capas de almacenamiento en caché, en la memoria, en el disco y en la granja de compilación remota, si está disponible. En Google, constantemente alcanzamos tasas de aciertos de caché al norte del 99%.

Bazel es correcto.

Bazel garantiza que tus objetos binarios se compilen solo a partir de tu propio entorno. código fuente. Las acciones de Bazel se ejecutan en zonas de pruebas individuales y en segmentos de Bazel todos los archivos de entrada de la compilación, siempre y cuando se vuelva a ejecutar la compilación comandos cuando sea necesario. Esto mantiene los objetos binarios actualizados para que la el mismo código fuente siempre da como resultado el mismo objeto binario, bit. poco a poco.

Dale un buen byte a make clean invocaciones infinitas y a perseguir errores fantasmas que se resolvieron en un código fuente que nunca se compilaron.

Bazel es extensible

Para aprovechar toda la potencia de Bazel, escribe tus propias reglas y macros en personaliza Bazel según tus necesidades específicas en una amplia variedad de proyectos.

Las reglas de Bazel se escriben en Starlark, nuestra un lenguaje de programación interno que es un subconjunto de Python. Marcas de Starlark la escritura de reglas accesible para la mayoría de los desarrolladores, mientras que, al mismo tiempo, se crean reglas que pueden usarse en todo el ecosistema.

Pruebas integradas

Ejecutor de pruebas integrado de Bazel sabe y ejecuta solo aquellas pruebas que deben volver a ejecutarse, a través de la ejecución remota (si están disponibles) para ejecutarlas en paralelo. Detecta las hojuelas tempranas con el uso remoto para ejecutar rápidamente una prueba miles de veces.

Bazel proporciona recursos para subir los resultados de las pruebas a una ubicación, lo que facilita una comunicación eficiente de los resultados de la prueba, ya sea en CI o por 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 se restringe 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 abastecer tus dependencias (¡pero puedes!), puedes señalar Bazel a la ubicación de tu código fuente o artefactos precompilados (p.ej., un git o Maven Central), y se encarga del resto.

Compatibilidad multiplataforma

Bazel puede compilar proyectos simultáneamente para varias plataformas, incluidos Linux, macOS, Windows y Android. También proporciona potentes compilación cruzada para compilar código para un y se ejecuta la compilación en otra.

Ecosistema amplio

A los líderes de la industria les encanta Bazel, ya que crea un gran de desarrolladores que usan Bazel y contribuyen a él. Buscar herramientas o servicios y documentación, incluidas las ofertas de asesoramiento 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.