Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Spike] Alternatives to Earthly for containerized builds #545

Open
4 tasks
binkley opened this issue Jun 19, 2024 · 1 comment
Open
4 tasks

[Spike] Alternatives to Earthly for containerized builds #545

binkley opened this issue Jun 19, 2024 · 1 comment
Labels
spike Explore options and questions

Comments

@binkley
Copy link
Owner

binkley commented Jun 19, 2024

Context

Originally the build was based on Batect for containerized builds; however that project is [no longer maintained[(https://github.com/batect/batect) by its author.

This project has moved to Earthly that is well-maintained. However, it currently has some features that may interact poorly depending on project setup and configuration.

An obvious approach is a plain Docker container (something that both Batect and Earthly both use under the hood). Since we rely on Gradle and Maven, and plugins are the key for build quality, the 3rd-party wrappers may not offer enough value to be the default.

See earthly/earthly#4220 for an Earthly issue that came up after following our advice in the pages.

Tasks

  • Research alternatives to Earthly, and decide which should be documented
  • Provide a plain Dockerfile for a containerized build easily used with local and CI builds
  • Decide on: plain Docker files, or use the Earthly wrapper as the project default
  • If changing to plain Docker, update doc pages to reflect that, and in one page talk about alternatives

Acceptance criteria

  • I always have a green build in CI regardless of container choices
  • Reading the docs, I can choose and switch my container while keeping a green CI build
@binkley binkley added the spike Explore options and questions label Jun 19, 2024
@jbduncan
Copy link

jbduncan commented Jan 10, 2025

There are a few alternatives to Earthly and containerisation for consistent builds that I think should be looked into:

  • Nix: the underlying technology of NixOS.
  • mise: a "polyglot tool version manager" that downloads tools from multiple sources, preferring the aqua registry first which lets it download tools more securely, apparently.
  • cashapp/hermit: another tool version manager, by engineers at CashApp (the same corporate group as Square).

I only have experience with mise.

Nix seems quite promising too, as being the basis of NixOS, it ensures all installs are at fixed versions and are reproducible IIUC. But I also hear that builds in Nix are slow and the Nix language is arcane.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
spike Explore options and questions
Projects
Status: No status
Development

No branches or pull requests

2 participants