O Que É um Build Hermético?
Um build hermético executa em um ambiente selado, onde cada entrada é declarada de antemão e nada vaza da rede ou da máquina host.
Hermeticidade significa que um build depende apenas de suas entradas declaradas explicitamente - nenhuma leitura oculta do host, nenhuma busca na internet no meio do build. Esse isolamento é o que torna os builds reproduzíveis e cacheáveis com segurança.
O que "selado" significa
Um build hermético não pode recorrer ao que quer que esteja instalado na máquina nem baixar algo em tempo real. Todas as fontes, dependências e ferramentas são fornecidas como entradas declaradas, então as mesmas entradas sempre produzem o mesmo resultado.
Um pequeno exemplo
Um build não hermético pode executar apt-get install no meio do build, puxando qualquer versão que estiver atual naquele dia. Um build hermético, em vez disso, declara a ferramenta exata como uma entrada fixada, então o build é idêntico independentemente dos pacotes instalados no host.
Hermético vs reproduzível
A hermeticidade trata do isolamento das entradas; a reprodutibilidade trata de saída idêntica. A hermeticidade é um forte facilitador da reprodutibilidade - se um build só pode enxergar suas entradas declaradas, uma variação não declarada não consegue se infiltrar.
Por que isso ajuda no caching
Um cache remoto só é seguro quando as entradas declaradas de uma etapa determinam totalmente sua saída. Builds herméticos garantem isso, então o caching pode ser agressivo sem arriscar resultados obsoletos ou errados. Ferramentas como o Bazel são construídas em torno disso.
O custo da hermeticidade
Declarar cada entrada dá mais trabalho do que deixar o build pegar coisas do host. A recompensa é a confiabilidade: builds herméticos raramente apresentam as falhas de "funciona na minha máquina" que vêm de dependências não declaradas do host.
Principais conclusões
- Um build hermético depende apenas de entradas declaradas explicitamente.
- Ele isola o build do host e da rede.
- A hermeticidade viabiliza reprodutibilidade confiável e caching seguro.