Skip to content
Latchkey

Earthly vs Make: builds reproduzíveis comparados

Escolha o Make para um task runner ubíquo, com rastreamento de dependências e zero instalação na maioria dos sistemas; escolha o Earthly quando quiser builds conteinerizados e reproduzíveis, com cache de camadas que se comportam da mesma forma localmente e no CI.

Make e Earthly orquestram passos de build, mas em níveis diferentes de isolamento. O Make é a clássica ferramenta de build quase universal: um Makefile define targets e dependências de arquivos, e ele executa o conjunto mínimo de comandos. O Earthly roda cada target de build em um container (usando o BuildKit) com uma sintaxe Earthfile que mistura ideias de Dockerfile e Makefile, buscando builds reproduzíveis entre máquinas e o CI.

EarthlyMake
IsolamentoContainers por target (BuildKit)Roda no shell do host
ReprodutibilidadeAlta (imagens base fixadas)Depende do ambiente do host
CacheCache de camadas como o DockerBaseado em timestamp nos targets de arquivo
Pegada de instalaçãoEarthly + Docker/BuildKitGeralmente pré-instalado
SintaxeEarthfile (estilo Docker + Make)Makefile (sensível a tabs)
PortabilidadeMesmo build local e no CIVaria com o tooling do host

Onde cada um realmente se destaca

O Make vence em ubiquidade e simplicidade: já está na maioria dos sistemas Unix, não exige container e seu modelo de dependência de arquivos é ótimo para trabalho incremental local. O Earthly vence em reprodutibilidade e cache: como cada passo roda em um container com imagens fixadas, os problemas de "funciona na minha máquina" diminuem, e o cache de camadas no estilo BuildKit torna builds repetidos rápidos.

No CI

O Earthly foi projetado para tornar builds locais e de CI idênticos, o que reduz a classe de falhas que só acontecem no runner por drift de ambiente. Ele pode compartilhar um cache de build entre execuções para evitar refazer camadas inalteradas. O Make no CI é mais leve (sem Docker necessário), mas você precisa garantir que o runner tenha as mesmas versões de toolchain que o Makefile presume, ou os builds divergem.

Ressalvas honestas

O Earthly requer Docker/BuildKit e adiciona uma camada de container, então tarefas simples ficam mais pesadas e o startup é mais lento que o Make puro. O Make é mais simples, mas sua reprodutibilidade depende inteiramente do host, e sua sintaxe sensível a tabs e o tratamento de erros limitado frustram iniciantes.

O veredito

Use o Make para execução de tarefas leve e nativa do host, onde o ambiente já é controlado. Use o Earthly quando a reprodutibilidade entre máquinas e o CI, mais o cache no estilo container, valerem a dependência do Docker.

Guias relacionados