Earthly builds are self-contained, isolated and reproducible. It's like Makefile and Dockerfile had a baby. Replace the collection of bash scripts, make files and docker files in your project with a simple Earthfile.
Hi 👋 Product Hunt!
I am Vlad, the maker of Earthly, and I couldn't be more excited to be sharing this project with you.
💡What is it?
Earthly is an open source build automation tool. It allows you to execute all your builds in containers. This makes them self-contained, reproducible, portable and parallel. You can use Earthly to create Docker images and artifacts (e.g. binaries, packages, arbitrary files).
🤔 Why?
We live in an era of continuous delivery, containers and open-source. And yet, our most popular CI/CD platform was started 15 years ago when the industry looked very different. CI systems have not changed much since — they are still largely glorified bash scripts, and the limitations are starting to show their age.
Tech giants have innovated and have open-sourced tools like Bazel and Pants. They bring modern features, like reproducibility, determinism, the ability to scale in a monorepo and the ability to use cloud-based cache and parallelization.
Although these systems are probably some of the most advanced build automation tools the world has seen, they come at a significant cost: the build config is not compatible with any of the popular open-source tooling that the language communities have gotten so used to. It’s like they come from a parallel universe.
With the purpose of bringing these modern capabilities to people out in the real world,we are announcing the release of Earthly: a build automation tool for the container era.
Earthly is not meant to replace your existing open-source tooling, but rather to leverage and augment it.
Earthly runs all build targets containerized: they get container isolation and layer caching
No sharing means that you get parallelization for free.
But most importantly, all builds are completely reproducible.
If you want to see what it's all about, then go check out the product. Leave some feedback, and if you would like to, you're welcome to DM me on Twitter or leave a comment below. 👇
Currently using Earthly for consistency of protobuf generation between multiple devs. We also check-in the generated go code so that we don't have to do this part in CI. Because we use Earthly to run protoc and grpc bindings, they're always the same version so we don't get spurious diffs between devs.
Previously we would have a Makefile for the protoc commands together with locally installed protoc bins. Earthly makes this interaction very nice now.
Earthly
Earthly