Live data from Hacker News

Show HN: Earthly v0.6

earthly.dev

1–10 of 38 posts

Re: Show HN: Earthly v0.6

#2
Hello HN. Earthly is a tool for build automation and we just had our biggest release yet.

Earthly is a modern build solution that is similar to a sandboxed makefile. It works with your existing CI and the #1 reason people use it today is to able to reproduce a CI build locally.

Today we promoted a number of important features to GA status in our 0.6 release including:

    - WITH DOCKER : Earthly can execute any number of containers in parallel, via an isolated Docker daemon that it starts up within.
    - User-Defined Commands: Extract common repetitive build steps into a command you can use across your projects.
    - Shared Cache:  Earthly v0.6 now provides shared caching. This  extends our existing build caching to work in ephemeral CI runners by storing the cache in regular container registries.

We started working on this project in 2020[1] on GitHub [2] and while time has gone quickly the number of people and projects using Earthly now is truly exciting.

Let me know what you think! Feature requests always welcome :)

[1] https://news.ycombinator.com/item?id=22890612

[2] https://github.com/earthly/earthly

Re: Show HN: Earthly v0.6

#3
I love earthly! It has been a joy to use.

One thing I haven’t gotten right is caching. Some of my builds have targets they depend on that are very expensive but rarely change, and I haven’t been able to make sense of when those targets are (re)computed and when they aren’t. This results in many builds taking a long time, when the targets could be reused from a cache.

Earthly is also missing something that I find to be a glaring omission from make—give me a command to simply list the targets in an Earthfile. ‘earthly ls’? Maybe have a column or two that indicates whether the target saves an image or artifact. When building a project I didn’t author, it’d be so helpful for the targets to be discoverable.

Re: Show HN: Earthly v0.6

#4
post #3

I love earthly! It has been a joy to use. One thing I haven’t gotten right is caching. Some of my builds have targets they depend on that are very expensive but rarely change, and I haven’t been able to make sense of when those targets are (re)computed and when they aren’t. This results in many builds taking a long time, when the targets could be reused from a cache. Earthly is also missing something that I find to b…

The `earthly ls` idea is great. We do have shell autocompletions but that is not quite the same thing. I will add a ticket for that.

Cache misses can be a bit inscrutable. It could be the buildkit GC is running, because disk space is getting scarce, or that some arg or file change caused the cache to be considered invalid.

Caching is an area we will continue to improve. We have a proposal for extended cache mounts here[1].

Thanks for using earthly!

[1] https://github.com/earthly/earthly/issues/1399

Re: Show HN: Earthly v0.6

#5
post #3

I love earthly! It has been a joy to use. One thing I haven’t gotten right is caching. Some of my builds have targets they depend on that are very expensive but rarely change, and I haven’t been able to make sense of when those targets are (re)computed and when they aren’t. This results in many builds taking a long time, when the targets could be reused from a cache. Earthly is also missing something that I find to b…

+1 on `earthly ls`. I've also thought it would be valuable to have "public" and "private" targets. When looking at a new codebase it can be hard to know which targets I should use when developing, and which are purely for internal use. Good docs help with this too, but they are not always there.

Re: Show HN: Earthly v0.6

#6
post #5
post #3

I love earthly! It has been a joy to use. One thing I haven’t gotten right is caching. Some of my builds have targets they depend on that are very expensive but rarely change, and I haven’t been able to make sense of when those targets are (re)computed and when they aren’t. This results in many builds taking a long time, when the targets could be reused from a cache. Earthly is also missing something that I find to b…

+1 on `earthly ls`. I've also thought it would be valuable to have "public" and "private" targets. When looking at a new codebase it can be hard to know which targets I should use when developing, and which are purely for internal use. Good docs help with this too, but they are not always there.

Public / Private is interesting.

Private would not be callable from command line and not be listed in `earthly ls`?

Re: Show HN: Earthly v0.6

#7
post #5

Earlier quoted context omitted.

+1 on `earthly ls`. I've also thought it would be valuable to have "public" and "private" targets. When looking at a new codebase it can be hard to know which targets I should use when developing, and which are purely for internal use. Good docs help with this too, but they are not always there.

Public / Private is interesting. Private would not be callable from command line and not be listed in `earthly ls`?

Yeah, exactly. Or even just not listed in `earthly ls`, maybe you'd still want to be able to call them manually for debugging purposes.

Re: Show HN: Earthly v0.6

#8
I tried using Earthly, great product.

Unfortunately, we rejected it at our organization due to how verbose the commands are. I want my users to be able to say `earthly plan-stage` for a terraform repo, and for it to work. But you cannot.

You cannot have earthly automatically use environment variables from your env, you have to explicitly list the commands yourself using flags:

$ earthly \

  --build-arg AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID \

  --build-arg AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY \

  --build-arg AWS_DEFAULT_REGION=us-west-2 \

  --build-arg AWS_SESSION_TOKEN=$AWS_SESSION_TOKEN \

  --build-arg AWS_SECURITY_TOKEN=$AWS_SECURITY_TOKEN \

  +plan-stage
This means if I want to `terraform plan` something, I need to explicitly set all of my AWS environment variables.

Compare this to `task plan-stage` or `make plan-stage`.

It is much too verbose and will only get worse as we add features to our pipelines.

Re: Show HN: Earthly v0.6

#9
Nice. Been looking for something like this - a Dockerfile equivalent that isn't governed by the Docker folks, with whom I generally do not see eye to eye with.

Bookmarked for later. Glad someone is thinking about this problem space!

Re: Show HN: Earthly v0.6

#10
post #8

I tried using Earthly, great product. Unfortunately, we rejected it at our organization due to how verbose the commands are. I want my users to be able to say `earthly plan-stage` for a terraform repo, and for it to work. But you cannot. You cannot have earthly automatically use environment variables from your env, you have to explicitly list the commands yourself using flags: $ earthly \ --build-arg AWS_ACCESS_KEY_I…

You may want to use secrets like this:

     earthly \
      --secret-file config=/home/user/.aws/config \
      +build
But yes, Earthly optimizes for reproducibility, so implicitly pulling in ENVs is not something it does.
Post reply on HN