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 ella potencialmente decenas o cientos de veces al día. Se necesita un sistema de compilación con todas las funciones para habilitar la productividad de los desarrolladores a medida que escala la organización. Para los desarrolladores individuales, compilar tu código es un proceso sencillo, por lo que un sistema de compilación podría parecer excesivo. Sin embargo, a una escala mayor, tener un sistema de compilación ayuda a administrar dependencias compartidas, como depender de otra parte de la base de código o un recurso externo, como una biblioteca. Los sistemas de compilación te ayudan a garantizar que tengas todo lo que necesitas para compilar el código antes de que comience a compilarse. 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 parte de la historia y los conceptos básicos de la compilación y la compilación de sistemas, incluidas las decisiones de diseño que se tomaron para tomar Bazel. Si estás familiarizado con los sistemas de compilación basados en artefactos, como Bazel, Buck y Pants, puedes omitir esta sección, pero es útil para comprender por qué los sistemas de compilación basados en artefactos son excelentes para habilitar el escalamiento.
¿Por qué usar un sistema de compilación?
Si no usaste un sistema de compilación anteriormente, comienza aquí. En esta página, se explica por qué debes usar un sistema de compilación y por qué los compiladores y las secuencias de comandos de compilación no son la mejor opción una vez que la organización comienza a escalar 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 compilaciones distribuidas o compilaciones que se ejecutan fuera de tu máquina local. Esto requiere una infraestructura más sólida para compartir recursos y compilar resultados (y es donde se produce la verdadera magia).
Administración de dependencias
En esta página, se abordan algunas complicaciones de las dependencias a gran escala y estrategias para evitarlas.