Conceptos básicos de compilación

Informar un problema Ver código fuente Nocturno · 8.4 · 8.3 · 8.2 · 8.1 · 8.0 · 7.6

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.

  • Compilaciones distribuidas

    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.