Noções básicas de construção

Um sistema de compilação é uma das partes mais importantes de uma organização de engenharia porque cada desenvolvedor interage com ele potencialmente dezenas ou centenas de vezes por dia. Um sistema de compilação completo é necessário para permitir a produtividade do desenvolvedor à medida que uma organização cresce. Para desenvolvedores individuais, é simples apenas compilar seu código e, portanto, um sistema de compilação pode parecer excessivo. Mas em uma escala maior, ter um sistema de compilação ajuda no gerenciamento de dependências compartilhadas, como depender de outra parte da base de código ou de um recurso externo, como uma biblioteca. Os sistemas de compilação ajudam a garantir que você tenha tudo o que precisa para compilar seu código antes que ele comece a ser compilado. Os sistemas de construção também aumentam a velocidade quando são configurados para ajudar os engenheiros a compartilhar recursos e resultados.

Esta seção cobre um pouco da história e noções básicas de sistemas de construção e construção, incluindo decisões de design que foram usadas para fazer o Bazel. Se você estiver familiarizado com sistemas de compilação baseados em artefatos, como Bazel, Buck e Pants, pule esta seção, mas é uma visão geral útil para entender por que os sistemas de compilação baseados em artefatos são excelentes na habilitação de escala.

  • Por que um sistema de construção?

    Se você nunca usou um sistema de compilação antes, comece aqui. Esta página aborda por que você deve usar um sistema de compilação e por que compiladores e scripts de compilação não são a melhor escolha quando sua organização começa a escalar além de alguns desenvolvedores.

  • Sistemas de construção baseados em tarefas

    Esta página discute sistemas de compilação baseados em tarefas (como Make, Maven e Gradle) e alguns de seus desafios.

  • Sistemas de construção baseados em artefatos

    Esta página discute os sistemas de compilação baseados em artefatos em resposta aos pontos problemáticos dos sistemas de compilação baseados em tarefas.

  • Compilações distribuídas

    Esta página abrange compilações distribuídas ou compilações executadas fora de sua máquina local. Isso requer uma infraestrutura mais robusta para compartilhar recursos e gerar resultados (e é onde a verdadeira magia acontece!)

  • Gerenciamento de Dependências

    Esta página aborda algumas complicações de dependências em larga escala e estratégias para neutralizar essas complicações.