Un sistema de compilación es una de las partes más importantes de una organización de ingeniería, ya que cada desarrollador interactúa con él potencialmente docenas o cientos de veces al día. Un sistema de compilación con todas las funciones es necesario para permitir la productividad de los desarrolladores a medida que la organización se expande. Para los desarrolladores individuales, es sencillo compilar el código, por lo que un sistema de compilación podría parecer excesivo. Sin embargo, a mayor escala, tener un sistema de compilación ayuda a administrar las dependencias compartidas, como depender de otra parte de la base de código o de un recurso externo, como una biblioteca. Los sistemas de compilación ayudan a garantizar que tengas todo lo que necesitas para compilar tu código antes de que comience la compilación. Los sistemas de compilación también aumentan la velocidad cuando se configuran para ayudar a los ingenieros a compartir recursos y resultados.
En esta sección, se abordan algunos aspectos básicos y la historia de los sistemas de compilación y compilación, incluidas las decisiones de diseño que se tomaron para crear Bazel. Si conoces los sistemas de compilación basados en artefactos, como Bazel, Buck y Pants, puedes omitir esta sección, pero es una descripción general útil para comprender por qué los sistemas de compilación basados en artefactos son excelentes para habilitar la escala.
- ¿Por qué un sistema de compilación? - Si nunca usaste un sistema de compilación, comienza aquí. En esta página, se explica por qué deberías usar un sistema de compilación y por qué los compiladores y los lenguajes de compilación no son la mejor opción una vez que tu organización comienza a crecer más allá de unos pocos desarrolladores. 
- Sistemas de compilación basados en tareas - En esta página, se analizan los sistemas de compilación basados en tareas (como Make, Maven y Gradle) y algunos de sus desafíos. 
- Sistemas de compilación basados en artefactos - En esta página, se analizan los sistemas de compilación basados en artefactos en respuesta a los problemas de los sistemas de compilación basados en tareas. 
- 
En esta página, se abordan las compilaciones distribuidas, es decir, las compilaciones que se ejecutan fuera de tu máquina local. Esto requiere una infraestructura más sólida para compartir recursos y generar resultados (¡y aquí es donde ocurre la verdadera magia!). 
- Administración de dependencias - En esta página, se abordan algunas complicaciones de las dependencias a gran escala y las estrategias para contrarrestarlas.