Earthly
Super simple build framework with consistent builds that you write once and run anywhere – on your laptop, remote, and in any CI.
Open Source on GitHub | Install Earthly w/o logging in
![Input Output logo](./assets/svg/input-output.png)
Increase in build speed after Earthly
It took literally just going from Dockerfile to Earthfile to bring build times from 45-ish minutes down to probably 15 or 20.
![Ses Goe](./assets/img/ses-goe.jpg)
Ses Goe
Director of Internal Tools @ NOCD
By using Earthly, we enabled developers to execute complex CI pipelines on their laptops without having to commit any code!
![Jesús Rodríguez Valencia](./assets/img/jesus-rodriguez-valencia.jpg)
Jesús Rodríguez Valencia
Principal Software Engineer @ Roche
By providing rapid build times, intelligent caching, and repeatability, Earthly enables a better approach to the coordination of development and deployment.
![Jesse Anger](./assets/img/jesse-anger.jpg)
Jesse Anger
Head of IT & Security Operations @ Deep Genomics
By reducing the friction inherent in build tools, Earthly is enabling SaaS companies to move quickly and reduce the context switching overhead in their engineering organizations.
![Spencer Kimball](./assets/img/spencer-kimball.png)
Spencer Kimball
Creator of CockroachDB and CEO @ Cockroach Labs
- Execute CI pipelines on your laptop, remotely, or in any CI
- Easily reproduce CI failures locally
- Containers make builds self-contained, isolated, consistent, and portable
- Correct execution, regardless of the environment
- New colleagues get started fast: no special configuration necessary
VERSION 0.8
FROM golang:1.21-alpine3.19
RUN apk --update --no-cache add git
WORKDIR /go-example
all:
BUILD +build
BUILD +lint
build:
COPY main.go .
RUN go build -o build/go-example main.go
SAVE ARTIFACT build/go-example AS LOCAL build/go-example
lint:
RUN go install golang.org/x/lint/golint@latest
COPY main.go .
RUN golint -set_exit_status ./...
- Quickly grasp Earthfiles without prior knowledge
- Syntax that is easy to write and understand by all engineers
- It's like Dockerfile and Makefile had a baby
- Works with the compilers and build tools you use.
- If it runs on Linux, it runs on Earthly.
- You don’t have to rewrite your existing builds or replace your
package.json
,go.mod
, orbuild.gradle
files. - Use Earthly as a wrapper around your existing builds and get Earthly’s consistency, parallelization, and caching.
- Works with both monorepos and polyrepos
- Builds can be split across multiple subdirectories or even repositories
- Reuse, don't repeat: reference builds, recipes, artifacts, and images from other locations
Read more about why Earthly excels in monorepos
- Automatically caches build results at each step of the build. Repeated steps are skipped each build.
- Automatically executes build targets in parallel whenever possible.
If your build has multiple steps, Earthly:
- Builds a directed acyclic graph (DAG).
- Isolates execution of each step.
- Runs independent steps in parallel.
- Caches results for future use.
- Reuse targets, artifacts, and images across multiple Earthfiles, even ones in other repositories.
- Import from any other build in a single line.
- Create vast and efficient build hierarchies that only execute steps impacted by your changes.
9800+
Stars
2300+
Commits
90+
Contributors
1100+
Community Members