Tools: Earthly Is Free — Makefile + Docker = Reproducible Builds - 2025 Update

Tools: Earthly Is Free — Makefile + Docker = Reproducible Builds - 2025 Update

The Problem With CI/CD

What Earthly Does

Earthfile

Why Earthly

Earthly vs Alternatives Your build works locally but fails in CI. Different Node versions, missing system libraries, environment differences. Earthly fixes this. Earthly = Makefile syntax + Docker isolation. Every step runs in a container. Same result everywhere. Templates let you quickly answer FAQs or store snippets for re-use. Hide child comments as well For further actions, you may consider blocking this person and/or reporting abuse

Code Block

Copy

VERSION 0.8 build: FROM node:20 WORKDIR /app COPY package.json package-lock.json . RUN npm ci COPY . . RUN npm run build SAVE ARTIFACT dist AS LOCAL dist test: FROM +build RUN npm test docker: FROM +build EXPOSE 3000 CMD ["node", "dist/server.js"] SAVE IMAGE my-app:latest all: BUILD +test BUILD +docker VERSION 0.8 build: FROM node:20 WORKDIR /app COPY package.json package-lock.json . RUN npm ci COPY . . RUN npm run build SAVE ARTIFACT dist AS LOCAL dist test: FROM +build RUN npm test docker: FROM +build EXPOSE 3000 CMD ["node", "dist/server.js"] SAVE IMAGE my-app:latest all: BUILD +test BUILD +docker VERSION 0.8 build: FROM node:20 WORKDIR /app COPY package.json package-lock.json . RUN npm ci COPY . . RUN npm run build SAVE ARTIFACT dist AS LOCAL dist test: FROM +build RUN npm test docker: FROM +build EXPOSE 3000 CMD ["node", "dist/server.js"] SAVE IMAGE my-app:latest all: BUILD +test BUILD +docker # Install curl -sSfL https://earthly.dev/get-earthly | sh # Run earthly +build # Build only earthly +test # Build + test earthly +docker # Build + create Docker image earthly +all # Everything # Install curl -sSfL https://earthly.dev/get-earthly | sh # Run earthly +build # Build only earthly +test # Build + test earthly +docker # Build + create Docker image earthly +all # Everything # Install curl -sSfL https://earthly.dev/get-earthly | sh # Run earthly +build # Build only earthly +test # Build + test earthly +docker # Build + create Docker image earthly +all # Everything - Same build locally and in CI - Layer caching (fast rebuilds) - Multi-platform builds - Parallel execution - Works with any CI (GitHub Actions, GitLab, Jenkins)