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.
| Earthly | Make | |
|---|---|---|
| Isolamento | Containers por target (BuildKit) | Roda no shell do host |
| Reprodutibilidade | Alta (imagens base fixadas) | Depende do ambiente do host |
| Cache | Cache de camadas como o Docker | Baseado em timestamp nos targets de arquivo |
| Pegada de instalação | Earthly + Docker/BuildKit | Geralmente pré-instalado |
| Sintaxe | Earthfile (estilo Docker + Make) | Makefile (sensível a tabs) |
| Portabilidade | Mesmo build local e no CI | Varia 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.