Skip to content
Latchkey

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.

Guias relacionados