Um sistema de build é 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 build com todos os recursos é necessário para permitir a produtividade do desenvolvedor à medida que a organização cresce. Para desenvolvedores individuais, é simples compilar o código, e um sistema de build pode parecer excessivo. Mas em uma escala maior, ter um sistema de build ajuda a gerenciar dependências compartilhadas, como depender de outra parte da base de código ou de um recurso externo, como uma biblioteca. Os sistemas de build ajudam a garantir que você tenha tudo o que precisa para criar seu código antes que ele comece a ser criado. Os sistemas de build também aumentam a velocidade quando configurados para ajudar os engenheiros a compartilhar recursos e resultados.
Esta seção aborda um pouco da história e os conceitos básicos de criação e sistemas de build, incluindo as decisões de design que levaram à criação do Bazel. Se você já conhece sistemas de build baseados em artefatos, como Bazel, Buck e Pants, pule esta seção, mas ela é uma visão geral útil para entender por que esses sistemas são excelentes para permitir a escala.
-
Se você nunca usou um sistema de build, comece por aqui. Esta página aborda por que você deve usar um sistema de build e por que os compiladores e scripts de build não são a melhor escolha quando sua organização começa a escalar além de alguns desenvolvedores.
Sistemas de build baseados em tarefas
Esta página discute sistemas de build baseados em tarefas (como Make, Maven e Gradle) e alguns dos desafios deles.
Sistemas de build baseados em artefatos
Esta página discute sistemas de build baseados em artefatos em resposta aos pontos de dor dos sistemas de build baseados em tarefas.
-
Esta página aborda builds distribuídos, ou builds executados fora da máquina local. Isso exige uma infraestrutura mais robusta para compartilhar recursos e criar resultados (e é onde a verdadeira magia acontece!).
-
Esta página aborda algumas complicações de dependências em grande escala e estratégias para contornar essas complicações.