From 1ec8a1e8369210d6b50c5ba042809966e54a9a9c Mon Sep 17 00:00:00 2001 From: Janis Horsts Date: Fri, 15 May 2026 14:02:11 +0100 Subject: [PATCH 1/3] feat: add ubuntu 26.04, remove ubuntu 23.04 --- .github/renovate.json5 | 16 +++++++++++++--- ast/tests/with-docker.ast.json | 4 ++-- docs/earthfile/earthfile.md | 4 ++-- docs/guides/docker-in-earthly.md | 2 +- tests/dind-auto-install/Earthfile | 7 +++++-- tests/with-docker-validate-labels/Earthfile | 10 +++++----- tests/with-docker/Earthfile | 4 ++-- 7 files changed, 30 insertions(+), 17 deletions(-) diff --git a/.github/renovate.json5 b/.github/renovate.json5 index e66e580b8b..b0282ee990 100644 --- a/.github/renovate.json5 +++ b/.github/renovate.json5 @@ -277,13 +277,23 @@ versioning: 'regex:^(?.*)-(?\\d+\\.\\d+)-docker-(?\\d+)\\.(?\\d+)\\.(?\\d+)-(?\\d+)$', }, { - // rule to update earthbuild/dind:ubuntu:23.04-* images + // rule to update earthbuild/dind:ubuntu:24.04-* images groupName: 'dind-images', matchPackageNames: [ 'earthbuild/dind', ], - matchCurrentVersion: '/^ubuntu-23\\.04-.*/', - allowedVersions: '/^ubuntu-23\\.04-.*/', + matchCurrentVersion: '/^ubuntu-24\\.04-.*/', + allowedVersions: '/^ubuntu-24\\.04-.*/', + versioning: 'regex:^(?.*)-(?\\d+\\.\\d+)-docker-(?\\d+)\\.(?\\d+)\\.(?\\d+)-(?\\d+)$', + }, + { + // rule to update earthbuild/dind:ubuntu:26.04-* images + groupName: 'dind-images', + matchPackageNames: [ + 'earthbuild/dind', + ], + matchCurrentVersion: '/^ubuntu-26\\.04-.*/', + allowedVersions: '/^ubuntu-26\\.04-.*/', versioning: 'regex:^(?.*)-(?\\d+\\.\\d+)-docker-(?\\d+)\\.(?\\d+)\\.(?\\d+)-(?\\d+)$', }, // group all examples and docs dependency updates together (except earthly/earthly and earthbuild/dind) diff --git a/ast/tests/with-docker.ast.json b/ast/tests/with-docker.ast.json index 60ba24fb8d..2d8e683404 100644 --- a/ast/tests/with-docker.ast.json +++ b/ast/tests/with-docker.ast.json @@ -926,7 +926,7 @@ "args": [ "+cgroup-v2-test", "--DIND_IMG=$DIND_IMAGE", - "--DIND_IMG=earthbuild/dind:ubuntu-23.04-docker-25.0.2-1" + "--DIND_IMG=earthbuild/dind:ubuntu-26.04-docker-29.4.1-1" ], "name": "BUILD" } @@ -968,7 +968,7 @@ "args": [ "ubuntu_img_tag", "=", - "23.04" + "26.04" ], "name": "ARG" } diff --git a/docs/earthfile/earthfile.md b/docs/earthfile/earthfile.md index 85c8628f98..2f6741f74c 100644 --- a/docs/earthfile/earthfile.md +++ b/docs/earthfile/earthfile.md @@ -1264,9 +1264,9 @@ For information on using `WITH DOCKER` with podman see the [Podman guide](../gui ##### Note -For performance reasons, it is recommended to use a Docker image that already contains `dockerd`. If `dockerd` is not found, Earthly will attempt to install it. +For performance reasons, it is recommended to use a Docker image that already contains `dockerd`. If `dockerd` is not found, earth will attempt to install it. -Earthly provides officially supported images such as `earthbuild/dind:alpine-3.22-docker-28.3.3-r1` and `earthbuild/dind:ubuntu-23.04-docker-25.0.2-1` to be used together with `WITH DOCKER`. +Earth provides officially supported images such as `earthbuild/dind:alpine-3.23-docker-29.1.2-r1` and `earthbuild/dind:ubuntu-26.04-docker-29.4.1-1` to be used together with `WITH DOCKER`. {% endhint %} {% hint style='info' %} diff --git a/docs/guides/docker-in-earthly.md b/docs/guides/docker-in-earthly.md index e2cc17c2d8..00d8543400 100644 --- a/docs/guides/docker-in-earthly.md +++ b/docs/guides/docker-in-earthly.md @@ -101,7 +101,7 @@ The current implementation of Docker in Earthly has a number of limitations: ... END ``` -- It is recommended that the target containing the `WITH DOCKER` clause inherits from a supported Docker-in-Docker (dind) image such as `earthbuild/dind:alpine-3.22-docker-28.3.3-r1` or `earthbuild/dind:ubuntu-23.04-docker-25.0.2-1`. If your build requires the use of an alternative environment as part of a test (e.g. to run commands like `sbt test` or `go test` together with a docker-compose stack), consider placing the test itself in a Docker image, then loading that image via `--load` and running the test as a Docker container. +- It is recommended that the target containing the `WITH DOCKER` clause inherits from a supported Docker-in-Docker (dind) image such as `earthbuild/dind:alpine-3.23-docker-29.1.2-r1` or `ubuntu-26.04-docker-29.4.1-1`. If your build requires the use of an alternative environment as part of a test (e.g. to run commands like `sbt test` or `go test` together with a docker-compose stack), consider placing the test itself in a Docker image, then loading that image via `--load` and running the test as a Docker container. - If you do not use an officially supported Docker-in-Docker image, Earthly will attempt to install Docker in whatever image you have chosen. This has the drawback of not being able to use cache efficiently and is not recommended for performance reasons. - To maximize the use of cache, all external images used should be declared via the options `--pull` or `--compose`. Even though commands such as `docker run` automatically pull an image if it is not found locally, it will do so every single time the `WITH DOCKER` clause is executed, due to Docker caching not being preserved between runs. Pre-declaring the images ensures that they are properly cached by Earthly to minimize unnecessary redownloads. - `docker build` cannot be used to build Dockerfiles. However, the Earthly command `FROM DOCKERFILE` can be used instead. See [alternative to docker build](#alternative-to-docker-build) below. diff --git a/tests/dind-auto-install/Earthfile b/tests/dind-auto-install/Earthfile index a82999bcaf..33502724f7 100644 --- a/tests/dind-auto-install/Earthfile +++ b/tests/dind-auto-install/Earthfile @@ -13,7 +13,9 @@ all: # renovate: datasource=docker packageName=ghcr.io/earthbuild/dind LET earthbuild_dind_ubuntu_2004_version=ubuntu-20.04-docker-28.1.1-1 # renovate: datasource=docker packageName=ghcr.io/earthbuild/dind - LET earthbuild_dind_ubuntu_2404_version=ubuntu-24.04-docker-28.3.3-1 + LET earthbuild_dind_ubuntu_2404_version=ubuntu-24.04-docker-29.3.0-1 + # renovate: datasource=docker packageName=ghcr.io/earthbuild/dind + LET earthbuild_dind_ubuntu_2604_version=ubuntu-26.04-docker-29.4.1-1 BUILD +test \ --BASE_IMAGE=docker:20.10.14-dind \ @@ -30,7 +32,8 @@ all: --BASE_IMAGE=public.ecr.aws/amazonlinux/amazonlinux:$amazonlinux_2023_version \ --BASE_IMAGE=ghcr.io/earthbuild/dind:$earthbuild_dind_alpine_version \ --BASE_IMAGE=ghcr.io/earthbuild/dind:$earthbuild_dind_ubuntu_2004_version \ - --BASE_IMAGE=ghcr.io/earthbuild/dind:$earthbuild_dind_ubuntu_2404_version + --BASE_IMAGE=ghcr.io/earthbuild/dind:$earthbuild_dind_ubuntu_2404_version \ + --BASE_IMAGE=ghcr.io/earthbuild/dind:$earthbuild_dind_ubuntu_2604_version test: ARG --required BASE_IMAGE diff --git a/tests/with-docker-validate-labels/Earthfile b/tests/with-docker-validate-labels/Earthfile index 7253b13652..074ce202fe 100644 --- a/tests/with-docker-validate-labels/Earthfile +++ b/tests/with-docker-validate-labels/Earthfile @@ -1,8 +1,8 @@ # Test for --without-earthly-labels feature -VERSION --allow-without-earthly-labels 0.8 +VERSION --allow-without-earthly-labels 0.8 + +ARG --global DIND_IMAGE="earthbuild/dind:ubuntu-26.04-docker-29.4.1-1" -ARG --global DIND_IMAGE="earthbuild/dind:ubuntu-23.04-docker-25.0.2-1" - all: BUILD +test-without-labels BUILD +test-with-labels @@ -20,12 +20,12 @@ myimage-with-labels: test-without-labels: FROM $DIND_IMAGE WITH DOCKER --load=+myimage-without-labels - RUN docker inspect myimage:test | jq -r '.[].Config.Labels' | grep -q null + RUN docker inspect myimage:test | jq -r '.[].Config.Labels' | grep -q null END test-with-labels: FROM $DIND_IMAGE WITH DOCKER --load=+myimage-with-labels # We just test that fields aren't null. - RUN docker inspect myimage:test | jq -e '.[].Config.Labels' > /dev/null + RUN docker inspect myimage:test | jq -e '.[].Config.Labels' > /dev/null END diff --git a/tests/with-docker/Earthfile b/tests/with-docker/Earthfile index 31f96fa52c..4d6c4390ac 100644 --- a/tests/with-docker/Earthfile +++ b/tests/with-docker/Earthfile @@ -163,13 +163,13 @@ if-after: cgroup-v2-test-all: BUILD +cgroup-v2-test \ --DIND_IMG=$DIND_IMAGE \ - --DIND_IMG=earthbuild/dind:ubuntu-23.04-docker-25.0.2-1 + --DIND_IMG=earthbuild/dind:ubuntu-26.04-docker-29.4.1-1 cgroup-v2-test: ARG --required DIND_IMG FROM $DIND_IMG COPY test-cgroup-v2.sh test-cgroup-v2-inside-container.sh . - ARG ubuntu_img_tag=23.04 + ARG ubuntu_img_tag=26.04 WITH DOCKER --pull ubuntu:$ubuntu_img_tag RUN ./test-cgroup-v2.sh END From 2030e32e998212dcad541a9226fe4c0d82ff1cc3 Mon Sep 17 00:00:00 2001 From: Janis Horsts Date: Fri, 15 May 2026 14:06:32 +0100 Subject: [PATCH 2/3] fix: update docs/guides/docker-in-earthly.md Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> --- docs/guides/docker-in-earthly.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/guides/docker-in-earthly.md b/docs/guides/docker-in-earthly.md index 00d8543400..ad270e67e8 100644 --- a/docs/guides/docker-in-earthly.md +++ b/docs/guides/docker-in-earthly.md @@ -101,7 +101,7 @@ The current implementation of Docker in Earthly has a number of limitations: ... END ``` -- It is recommended that the target containing the `WITH DOCKER` clause inherits from a supported Docker-in-Docker (dind) image such as `earthbuild/dind:alpine-3.23-docker-29.1.2-r1` or `ubuntu-26.04-docker-29.4.1-1`. If your build requires the use of an alternative environment as part of a test (e.g. to run commands like `sbt test` or `go test` together with a docker-compose stack), consider placing the test itself in a Docker image, then loading that image via `--load` and running the test as a Docker container. +- It is recommended that the target containing the WITH DOCKER clause inherits from a supported Docker-in-Docker (dind) image such as earthbuild/dind:alpine-3.23-docker-29.1.2-r1 or earthbuild/dind:ubuntu-26.04-docker-29.4.1-1. If your build requires the use of an alternative environment as part of a test (e.g. to run commands like sbt test or go test together with a docker-compose stack), consider placing the test itself in a Docker image, then loading that image via --load and running the test as a Docker container. - If you do not use an officially supported Docker-in-Docker image, Earthly will attempt to install Docker in whatever image you have chosen. This has the drawback of not being able to use cache efficiently and is not recommended for performance reasons. - To maximize the use of cache, all external images used should be declared via the options `--pull` or `--compose`. Even though commands such as `docker run` automatically pull an image if it is not found locally, it will do so every single time the `WITH DOCKER` clause is executed, due to Docker caching not being preserved between runs. Pre-declaring the images ensures that they are properly cached by Earthly to minimize unnecessary redownloads. - `docker build` cannot be used to build Dockerfiles. However, the Earthly command `FROM DOCKERFILE` can be used instead. See [alternative to docker build](#alternative-to-docker-build) below. From 8eb42f5e8adde722ddf587a55e89dff410a5ff07 Mon Sep 17 00:00:00 2001 From: Janis Horsts Date: Fri, 15 May 2026 16:03:36 +0100 Subject: [PATCH 3/3] chore: tidy --- tests/dind-auto-install/Earthfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/dind-auto-install/Earthfile b/tests/dind-auto-install/Earthfile index 33502724f7..239f0f9f56 100644 --- a/tests/dind-auto-install/Earthfile +++ b/tests/dind-auto-install/Earthfile @@ -13,7 +13,7 @@ all: # renovate: datasource=docker packageName=ghcr.io/earthbuild/dind LET earthbuild_dind_ubuntu_2004_version=ubuntu-20.04-docker-28.1.1-1 # renovate: datasource=docker packageName=ghcr.io/earthbuild/dind - LET earthbuild_dind_ubuntu_2404_version=ubuntu-24.04-docker-29.3.0-1 + LET earthbuild_dind_ubuntu_2404_version=ubuntu-24.04-docker-28.5.2-1 # renovate: datasource=docker packageName=ghcr.io/earthbuild/dind LET earthbuild_dind_ubuntu_2604_version=ubuntu-26.04-docker-29.4.1-1