Conceptos básicos de compilación

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.

  • Compilaciones distribuidas

    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.