Conceptos básicos de construcción

Un sistema de compilación es una de las partes más importantes de una organización de ingeniería porque cada desarrollador interactúa con él potencialmente docenas o cientos de veces al día. Es necesario un sistema de compilación con todas las funciones para permitir la productividad del desarrollador a medida que la organización escala. Para los desarrolladores individuales, es sencillo simplemente compilar su código, por lo que un sistema de compilación puede parecer excesivo. Pero a mayor escala, tener un sistema de compilación ayuda a administrar las dependencias compartidas, como confiar en otra parte del código base o en un recurso externo, como una biblioteca. Los sistemas de compilación ayudan a garantizar que tenga todo lo que necesita para compilar su 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.

Esta sección cubre parte de la historia y los conceptos básicos de la construcción y los sistemas de construcción, incluidas las decisiones de diseño que se tomaron para hacer Bazel. Si está familiarizado con los sistemas de compilación basados ​​en artefactos, como Bazel, Buck y Pants, puede 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 construcción?

    Si no ha usado un sistema de compilación antes, comience aquí. Esta página explica por qué debería usar un sistema de compilación y por qué los compiladores y los scripts de compilación no son la mejor opción una vez que su organización comienza a escalar más allá de unos pocos desarrolladores.

  • Sistemas de compilación basados ​​en tareas

    Esta página analiza los sistemas de compilación basados ​​en tareas (como Make, Maven y Gradle) y algunos de sus desafíos.

  • Sistemas de construcción basados ​​en artefactos

    Esta página analiza los sistemas de compilación basados ​​en artefactos en respuesta a los puntos débiles de los sistemas de compilación basados ​​en tareas.

  • Construcciones distribuidas

    Esta página cubre compilaciones distribuidas o compilaciones que se ejecutan fuera de su máquina local. Esto requiere una infraestructura más robusta para compartir recursos y generar resultados (¡y es donde ocurre la verdadera magia!)

  • Gestión de dependencias

    Esta página cubre algunas complicaciones de las dependencias a gran escala y estrategias para contrarrestar esas complicaciones.