feat(images): move the job image to Ubuntu 26.04 LTS
- commit
- f9de49595665597646c61ff4acd15fbf2a001d4d
- author
- brice · · 2026-10-18 20:41 UTC
- parent
- 3ad0272
- signature
- GPG Verified
CD88F9E564E0102646FB6077A1A07C7C7C3E349D· arch-gpg Verified for the committer email
7 files · +18 -17
M README.md +1 -1
| @@ -60,7 +60,7 @@ CGO_ENABLED=0 go build -trimpath -o ermite-runner . | |||
| 60 | 60 | sudo install -m 0600 /dev/stdin /etc/ermite-runner/env <<'ENV' | |
| 61 | 61 | ERMITE_RUNNER_URL=https://ermite.example.com | |
| 62 | 62 | ERMITE_RUNNER_NAME=runner-1 | |
| 63 | - | ERMITE_RUNNER_LABELS=ubuntu-latest,ubuntu-24.04 | |
| 63 | + | ERMITE_RUNNER_LABELS=ubuntu-latest,ubuntu-26.04 | |
| 64 | 64 | ERMITE_RUNNER_LOG_FORMAT=json | |
| 65 | 65 | ENV | |
| 66 | 66 | ``` | |
| @@ -60,7 +60,7 @@ CGO_ENABLED=0 go build -trimpath -o ermite-runner . | |||||
| 60 | sudo install -m 0600 /dev/stdin /etc/ermite-runner/env <<'ENV' | 60 | sudo install -m 0600 /dev/stdin /etc/ermite-runner/env <<'ENV' | ||
| 61 | ERMITE_RUNNER_URL=https://ermite.example.com | 61 | ERMITE_RUNNER_URL=https://ermite.example.com | ||
| 62 | ERMITE_RUNNER_NAME=runner-1 | 62 | ERMITE_RUNNER_NAME=runner-1 | ||
| 63 | - | ERMITE_RUNNER_LABELS=ubuntu-latest,ubuntu-24.04 | 63 | + | ERMITE_RUNNER_LABELS=ubuntu-latest,ubuntu-26.04 |
| 64 | ERMITE_RUNNER_LOG_FORMAT=json | 64 | ERMITE_RUNNER_LOG_FORMAT=json | ||
| 65 | ENV | 65 | ENV | ||
| 66 | ``` | 66 | ``` | ||
M docs/development.md +3 -3
| @@ -43,7 +43,7 @@ sudo env GOWORK=off ERMITE_RUNNER_IT_VM=1 ERMITE_RUNNER_ISOLATION=vm \ | |||
| 43 | 43 | ### Container | |
| 44 | 44 | ||
| 45 | 45 | ```sh | |
| 46 | - | sudo env GOWORK=off ERMITE_RUNNER_IT_CONTAINER=1 ERMITE_RUNNER_IMAGE=ermite-runner-ubuntu-24.04:latest \ | |
| 46 | + | sudo env GOWORK=off ERMITE_RUNNER_IT_CONTAINER=1 ERMITE_RUNNER_IMAGE=ermite-runner-ubuntu-26.04:latest \ | |
| 47 | 47 | DOCKER_HOST=unix:///var/run/docker.sock "$(command -v go)" test -count=1 -v ./internal/sandbox/integration -run Container | |
| 48 | 48 | ``` | |
| 49 | 49 | ||
| @@ -52,8 +52,8 @@ sudo env GOWORK=off ERMITE_RUNNER_IT_CONTAINER=1 ERMITE_RUNNER_IMAGE=ermite-runn | |||
| 52 | 52 | The real executor runs in the real image, started by the container driver. It also works with a rootless Docker daemon, where `mount` and `umount` are replaced by stand-ins. | |
| 53 | 53 | ||
| 54 | 54 | ```sh | |
| 55 | - | IMAGE_TAG=ermite-runner-ubuntu-24.04:dev scripts/build-image.sh tmp/image | |
| 56 | - | ERMITE_RUNNER_IT_E2E=1 ERMITE_RUNNER_TEST_IMAGE=ermite-runner-ubuntu-24.04:dev GOWORK=off go test -race -count=1 ./internal/e2e | |
| 55 | + | IMAGE_TAG=ermite-runner-ubuntu-26.04:dev scripts/build-image.sh tmp/image | |
| 56 | + | ERMITE_RUNNER_IT_E2E=1 ERMITE_RUNNER_TEST_IMAGE=ermite-runner-ubuntu-26.04:dev GOWORK=off go test -race -count=1 ./internal/e2e | |
| 57 | 57 | ``` | |
| 58 | 58 | ||
| 59 | 59 | - `TestChainCorpus` runs jobs of the ermite-conformance corpus through a fake server and compares the result with recordings made on github.com. It reads `ERMITE_CONFORMANCE_DIR` (default: a sibling checkout of ermite-conformance) and never writes to it. | |
| @@ -43,7 +43,7 @@ sudo env GOWORK=off ERMITE_RUNNER_IT_VM=1 ERMITE_RUNNER_ISOLATION=vm \ | |||||
| 43 | ### Container | 43 | ### Container | ||
| 44 | 44 | ||||
| 45 | ```sh | 45 | ```sh | ||
| 46 | - | sudo env GOWORK=off ERMITE_RUNNER_IT_CONTAINER=1 ERMITE_RUNNER_IMAGE=ermite-runner-ubuntu-24.04:latest \ | 46 | + | sudo env GOWORK=off ERMITE_RUNNER_IT_CONTAINER=1 ERMITE_RUNNER_IMAGE=ermite-runner-ubuntu-26.04:latest \ |
| 47 | DOCKER_HOST=unix:///var/run/docker.sock "$(command -v go)" test -count=1 -v ./internal/sandbox/integration -run Container | 47 | DOCKER_HOST=unix:///var/run/docker.sock "$(command -v go)" test -count=1 -v ./internal/sandbox/integration -run Container | ||
| 48 | ``` | 48 | ``` | ||
| 49 | 49 | ||||
| @@ -52,8 +52,8 @@ sudo env GOWORK=off ERMITE_RUNNER_IT_CONTAINER=1 ERMITE_RUNNER_IMAGE=ermite-runn | |||||
| 52 | The real executor runs in the real image, started by the container driver. It also works with a rootless Docker daemon, where `mount` and `umount` are replaced by stand-ins. | 52 | The real executor runs in the real image, started by the container driver. It also works with a rootless Docker daemon, where `mount` and `umount` are replaced by stand-ins. | ||
| 53 | 53 | ||||
| 54 | ```sh | 54 | ```sh | ||
| 55 | - | IMAGE_TAG=ermite-runner-ubuntu-24.04:dev scripts/build-image.sh tmp/image | 55 | + | IMAGE_TAG=ermite-runner-ubuntu-26.04:dev scripts/build-image.sh tmp/image |
| 56 | - | ERMITE_RUNNER_IT_E2E=1 ERMITE_RUNNER_TEST_IMAGE=ermite-runner-ubuntu-24.04:dev GOWORK=off go test -race -count=1 ./internal/e2e | 56 | + | ERMITE_RUNNER_IT_E2E=1 ERMITE_RUNNER_TEST_IMAGE=ermite-runner-ubuntu-26.04:dev GOWORK=off go test -race -count=1 ./internal/e2e |
| 57 | ``` | 57 | ``` | ||
| 58 | 58 | ||||
| 59 | - `TestChainCorpus` runs jobs of the ermite-conformance corpus through a fake server and compares the result with recordings made on github.com. It reads `ERMITE_CONFORMANCE_DIR` (default: a sibling checkout of ermite-conformance) and never writes to it. | 59 | - `TestChainCorpus` runs jobs of the ermite-conformance corpus through a fake server and compares the result with recordings made on github.com. It reads `ERMITE_CONFORMANCE_DIR` (default: a sibling checkout of ermite-conformance) and never writes to it. | ||
M docs/images.md +3 -3
| @@ -4,10 +4,10 @@ A job runs in the image named by `ERMITE_RUNNER_IMAGE`. | |||
| 4 | 4 | ||
| 5 | 5 | | Mode | Value | Contents | | |
| 6 | 6 | | --- | --- | --- | | |
| 7 | - | | `container` | OCI reference | Default `ermite-runner-ubuntu-24.04:latest` | | |
| 7 | + | | `container` | OCI reference | Default `ermite-runner-ubuntu-26.04:latest` | | |
| 8 | 8 | | `vm` | Directory | `vmlinux` (`Image` on arm64) and `base.ext4`. Default `<state dir>/image` | | |
| 9 | 9 | ||
| 10 | - | Both come from `images/ubuntu-24.04/Dockerfile`. The runner executable and Node.js are attached by the host. They are never part of the image. | |
| 10 | + | Both come from `images/ubuntu-26.04/Dockerfile` (Ubuntu 26.04 LTS). The runner executable and Node.js are attached by the host. They are never part of the image. | |
| 11 | 11 | ||
| 12 | 12 | ## Build | |
| 13 | 13 | ||
| @@ -18,7 +18,7 @@ scripts/build-image.sh tmp/image # builds the OCI image and tmp/image/base.ex | |||
| 18 | 18 | ||
| 19 | 19 | - `build-kernel.sh` downloads Linux 6.18 LTS from kernel.org and checks the tarball against the published sha256 sums. It needs `bc`, `flex`, `bison`, `pahole`, libelf and openssl headers. | |
| 20 | 20 | - `build-image.sh` needs Docker or Podman (rootless is fine) and e2fsprogs 1.47.1 or newer. No root is needed. | |
| 21 | - | - The OCI image is tagged `ermite-runner-ubuntu-24.04:latest`. Set `IMAGE_TAG` to change it. | |
| 21 | + | - The OCI image is tagged `ermite-runner-ubuntu-26.04:latest`. Set `IMAGE_TAG` to change it. | |
| 22 | 22 | - The kernel config is `images/kernel/config-6.18` plus per-architecture fragments. The build fails if a listed option does not survive `olddefconfig`. | |
| 23 | 23 | - arm64 builds with `ARCH_NAME=arm64`. | |
| 24 | 24 | - `CONFIG_BINFMT_MISC` is built in and mounted by the guest init, so `docker/setup-qemu-action` can run foreign-architecture containers. | |
| @@ -4,10 +4,10 @@ A job runs in the image named by `ERMITE_RUNNER_IMAGE`. | |||||
| 4 | 4 | ||||
| 5 | | Mode | Value | Contents | | 5 | | Mode | Value | Contents | | ||
| 6 | | --- | --- | --- | | 6 | | --- | --- | --- | | ||
| 7 | - | | `container` | OCI reference | Default `ermite-runner-ubuntu-24.04:latest` | | 7 | + | | `container` | OCI reference | Default `ermite-runner-ubuntu-26.04:latest` | |
| 8 | | `vm` | Directory | `vmlinux` (`Image` on arm64) and `base.ext4`. Default `<state dir>/image` | | 8 | | `vm` | Directory | `vmlinux` (`Image` on arm64) and `base.ext4`. Default `<state dir>/image` | | ||
| 9 | 9 | ||||
| 10 | - | Both come from `images/ubuntu-24.04/Dockerfile`. The runner executable and Node.js are attached by the host. They are never part of the image. | 10 | + | Both come from `images/ubuntu-26.04/Dockerfile` (Ubuntu 26.04 LTS). The runner executable and Node.js are attached by the host. They are never part of the image. |
| 11 | 11 | ||||
| 12 | ## Build | 12 | ## Build | ||
| 13 | 13 | ||||
| @@ -18,7 +18,7 @@ scripts/build-image.sh tmp/image # builds the OCI image and tmp/image/base.ex | |||||
| 18 | 18 | ||||
| 19 | - `build-kernel.sh` downloads Linux 6.18 LTS from kernel.org and checks the tarball against the published sha256 sums. It needs `bc`, `flex`, `bison`, `pahole`, libelf and openssl headers. | 19 | - `build-kernel.sh` downloads Linux 6.18 LTS from kernel.org and checks the tarball against the published sha256 sums. It needs `bc`, `flex`, `bison`, `pahole`, libelf and openssl headers. | ||
| 20 | - `build-image.sh` needs Docker or Podman (rootless is fine) and e2fsprogs 1.47.1 or newer. No root is needed. | 20 | - `build-image.sh` needs Docker or Podman (rootless is fine) and e2fsprogs 1.47.1 or newer. No root is needed. | ||
| 21 | - | - The OCI image is tagged `ermite-runner-ubuntu-24.04:latest`. Set `IMAGE_TAG` to change it. | 21 | + | - The OCI image is tagged `ermite-runner-ubuntu-26.04:latest`. Set `IMAGE_TAG` to change it. |
| 22 | - The kernel config is `images/kernel/config-6.18` plus per-architecture fragments. The build fails if a listed option does not survive `olddefconfig`. | 22 | - The kernel config is `images/kernel/config-6.18` plus per-architecture fragments. The build fails if a listed option does not survive `olddefconfig`. | ||
| 23 | - arm64 builds with `ARCH_NAME=arm64`. | 23 | - arm64 builds with `ARCH_NAME=arm64`. | ||
| 24 | - `CONFIG_BINFMT_MISC` is built in and mounted by the guest init, so `docker/setup-qemu-action` can run foreign-architecture containers. | 24 | - `CONFIG_BINFMT_MISC` is built in and mounted by the guest init, so `docker/setup-qemu-action` can run foreign-architecture containers. | ||
R images/ubuntu-24.04/Dockerfile → images/ubuntu-26.04/Dockerfile +5 -4 renamed, 96% similar
| @@ -1,11 +1,11 @@ | |||
| 1 | 1 | # SPDX-License-Identifier: MIT | |
| 2 | 2 | # | |
| 3 | - | # ermite-runner-ubuntu-24.04: the minimal CI-1 runner image. The same | |
| 3 | + | # ermite-runner-ubuntu-26.04: the minimal CI-1 runner image. The same | |
| 4 | 4 | # filesystem is used as an OCI image (container isolation) and exported to an | |
| 5 | 5 | # ext4 base image (vm isolation) by scripts/build-image.sh. It holds the OS | |
| 6 | 6 | # only: the runner executable is attached by the host at start (never baked | |
| 7 | 7 | # in), so a runner upgrade does not need an image rebuild. | |
| 8 | - | FROM ubuntu:24.04 | |
| 8 | + | FROM ubuntu:26.04 | |
| 9 | 9 | ||
| 10 | 10 | ARG DEBIAN_FRONTEND=noninteractive | |
| 11 | 11 | ||
| @@ -16,7 +16,8 @@ RUN apt-get update \ | |||
| 16 | 16 | && rm -rf /var/lib/apt/lists/* | |
| 17 | 17 | ||
| 18 | 18 | # The command-line tools of GitHub's ubuntu-24.04 image that workflows call | |
| 19 | - | # directly (runner-images, images/ubuntu/toolsets/toolset-2404.json: | |
| 19 | + | # directly (runner-images, images/ubuntu/toolsets/toolset-2404.json, the | |
| 20 | + | # latest published toolset: | |
| 20 | 21 | # apt.vital_packages and apt.cmd_packages), minus the daemons and services | |
| 21 | 22 | # (haveged, pollinate, sphinxsearch, systemd-coredump). parallel pulls in | |
| 22 | 23 | # sysstat, whose collection units are masked: a job image runs no services. | |
| @@ -33,7 +34,7 @@ RUN apt-get update \ | |||
| 33 | 34 | RUN install -m 0755 -d /etc/apt/keyrings \ | |
| 34 | 35 | && curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc \ | |
| 35 | 36 | && chmod a+r /etc/apt/keyrings/docker.asc \ | |
| 36 | - | && echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu noble stable" \ | |
| 37 | + | && echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu resolute stable" \ | |
| 37 | 38 | > /etc/apt/sources.list.d/docker.list \ | |
| 38 | 39 | && apt-get update \ | |
| 39 | 40 | && apt-get install -y --no-install-recommends \ | |
| @@ -1,11 +1,11 @@ | |||||
| 1 | # SPDX-License-Identifier: MIT | 1 | # SPDX-License-Identifier: MIT | ||
| 2 | # | 2 | # | ||
| 3 | - | # ermite-runner-ubuntu-24.04: the minimal CI-1 runner image. The same | 3 | + | # ermite-runner-ubuntu-26.04: the minimal CI-1 runner image. The same |
| 4 | # filesystem is used as an OCI image (container isolation) and exported to an | 4 | # filesystem is used as an OCI image (container isolation) and exported to an | ||
| 5 | # ext4 base image (vm isolation) by scripts/build-image.sh. It holds the OS | 5 | # ext4 base image (vm isolation) by scripts/build-image.sh. It holds the OS | ||
| 6 | # only: the runner executable is attached by the host at start (never baked | 6 | # only: the runner executable is attached by the host at start (never baked | ||
| 7 | # in), so a runner upgrade does not need an image rebuild. | 7 | # in), so a runner upgrade does not need an image rebuild. | ||
| 8 | - | FROM ubuntu:24.04 | 8 | + | FROM ubuntu:26.04 |
| 9 | 9 | ||||
| 10 | ARG DEBIAN_FRONTEND=noninteractive | 10 | ARG DEBIAN_FRONTEND=noninteractive | ||
| 11 | 11 | ||||
| @@ -16,7 +16,8 @@ RUN apt-get update \ | |||||
| 16 | && rm -rf /var/lib/apt/lists/* | 16 | && rm -rf /var/lib/apt/lists/* | ||
| 17 | 17 | ||||
| 18 | # The command-line tools of GitHub's ubuntu-24.04 image that workflows call | 18 | # The command-line tools of GitHub's ubuntu-24.04 image that workflows call | ||
| 19 | - | # directly (runner-images, images/ubuntu/toolsets/toolset-2404.json: | 19 | + | # directly (runner-images, images/ubuntu/toolsets/toolset-2404.json, the |
| 20 | + | # latest published toolset: | |||
| 20 | # apt.vital_packages and apt.cmd_packages), minus the daemons and services | 21 | # apt.vital_packages and apt.cmd_packages), minus the daemons and services | ||
| 21 | # (haveged, pollinate, sphinxsearch, systemd-coredump). parallel pulls in | 22 | # (haveged, pollinate, sphinxsearch, systemd-coredump). parallel pulls in | ||
| 22 | # sysstat, whose collection units are masked: a job image runs no services. | 23 | # sysstat, whose collection units are masked: a job image runs no services. | ||
| @@ -33,7 +34,7 @@ RUN apt-get update \ | |||||
| 33 | RUN install -m 0755 -d /etc/apt/keyrings \ | 34 | RUN install -m 0755 -d /etc/apt/keyrings \ | ||
| 34 | && curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc \ | 35 | && curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc \ | ||
| 35 | && chmod a+r /etc/apt/keyrings/docker.asc \ | 36 | && chmod a+r /etc/apt/keyrings/docker.asc \ | ||
| 36 | - | && echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu noble stable" \ | 37 | + | && echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu resolute stable" \ |
| 37 | > /etc/apt/sources.list.d/docker.list \ | 38 | > /etc/apt/sources.list.d/docker.list \ | ||
| 38 | && apt-get update \ | 39 | && apt-get update \ | ||
| 39 | && apt-get install -y --no-install-recommends \ | 40 | && apt-get install -y --no-install-recommends \ | ||
M internal/e2e/e2e_test.go +1 -1
| @@ -3,7 +3,7 @@ | |||
| 3 | 3 | // Package e2e runs jobs through the real executor in a real sandbox. The tests | |
| 4 | 4 | // are opt-in because they need Docker (and, for the VM, KVM and Firecracker): | |
| 5 | 5 | // | |
| 6 | - | // ERMITE_RUNNER_IT_E2E=1 ERMITE_RUNNER_TEST_IMAGE=ermite-runner-ubuntu-24.04:dev go test ./internal/e2e | |
| 6 | + | // ERMITE_RUNNER_IT_E2E=1 ERMITE_RUNNER_TEST_IMAGE=ermite-runner-ubuntu-26.04:dev go test ./internal/e2e | |
| 7 | 7 | // | |
| 8 | 8 | // On a workstation with a rootless Docker daemon the container driver is used | |
| 9 | 9 | // with UnsafeAllowRootlessForTests (a test-only option): the jobs run as in production except | |
| @@ -3,7 +3,7 @@ | |||||
| 3 | // Package e2e runs jobs through the real executor in a real sandbox. The tests | 3 | // Package e2e runs jobs through the real executor in a real sandbox. The tests | ||
| 4 | // are opt-in because they need Docker (and, for the VM, KVM and Firecracker): | 4 | // are opt-in because they need Docker (and, for the VM, KVM and Firecracker): | ||
| 5 | // | 5 | // | ||
| 6 | - | // ERMITE_RUNNER_IT_E2E=1 ERMITE_RUNNER_TEST_IMAGE=ermite-runner-ubuntu-24.04:dev go test ./internal/e2e | 6 | + | // ERMITE_RUNNER_IT_E2E=1 ERMITE_RUNNER_TEST_IMAGE=ermite-runner-ubuntu-26.04:dev go test ./internal/e2e |
| 7 | // | 7 | // | ||
| 8 | // On a workstation with a rootless Docker daemon the container driver is used | 8 | // On a workstation with a rootless Docker daemon the container driver is used | ||
| 9 | // with UnsafeAllowRootlessForTests (a test-only option): the jobs run as in production except | 9 | // with UnsafeAllowRootlessForTests (a test-only option): the jobs run as in production except | ||
M internal/sandbox/config.go +1 -1
| @@ -46,7 +46,7 @@ const ( | |||
| 46 | 46 | // Defaults. | |
| 47 | 47 | const ( | |
| 48 | 48 | DefaultStateDir = "/var/lib/ermite-runner" | |
| 49 | - | DefaultOCIImage = "ermite-runner-ubuntu-24.04:latest" | |
| 49 | + | DefaultOCIImage = "ermite-runner-ubuntu-26.04:latest" | |
| 50 | 50 | DefaultUIDBase = 900000 | |
| 51 | 51 | DefaultNetwork = "10.200.0.0/16" | |
| 52 | 52 | DefaultCPUs = 2 | |
| @@ -46,7 +46,7 @@ const ( | |||||
| 46 | // Defaults. | 46 | // Defaults. | ||
| 47 | const ( | 47 | const ( | ||
| 48 | DefaultStateDir = "/var/lib/ermite-runner" | 48 | DefaultStateDir = "/var/lib/ermite-runner" | ||
| 49 | - | DefaultOCIImage = "ermite-runner-ubuntu-24.04:latest" | 49 | + | DefaultOCIImage = "ermite-runner-ubuntu-26.04:latest" |
| 50 | DefaultUIDBase = 900000 | 50 | DefaultUIDBase = 900000 | ||
| 51 | DefaultNetwork = "10.200.0.0/16" | 51 | DefaultNetwork = "10.200.0.0/16" | ||
| 52 | DefaultCPUs = 2 | 52 | DefaultCPUs = 2 | ||
M scripts/build-image.sh +4 -4
| @@ -1,7 +1,7 @@ | |||
| 1 | 1 | #!/usr/bin/env bash | |
| 2 | 2 | # SPDX-License-Identifier: MIT | |
| 3 | 3 | # | |
| 4 | - | # Build the ermite-runner-ubuntu-24.04 image as an OCI image (container | |
| 4 | + | # Build the ermite-runner-ubuntu-26.04 image as an OCI image (container | |
| 5 | 5 | # isolation) and as a sparse ext4 base image (vm isolation). No root needed: | |
| 6 | 6 | # the OCI build uses docker or podman (rootless is fine), the ext4 image is | |
| 7 | 7 | # written by `mkfs.ext4 -d` from the exported rootfs tarball. | |
| @@ -10,7 +10,7 @@ | |||
| 10 | 10 | # | |
| 11 | 11 | # Environment: | |
| 12 | 12 | # ENGINE docker or podman (default: first found) | |
| 13 | - | # IMAGE_TAG OCI tag (default ermite-runner-ubuntu-24.04:latest, the | |
| 13 | + | # IMAGE_TAG OCI tag (default ermite-runner-ubuntu-26.04:latest, the | |
| 14 | 14 | # default of ERMITE_RUNNER_IMAGE in container mode) | |
| 15 | 15 | # EXT4_SLACK free space added to the base image in MiB (default 512) | |
| 16 | 16 | # | |
| @@ -20,7 +20,7 @@ set -euo pipefail | |||
| 20 | 20 | ||
| 21 | 21 | root=$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd) | |
| 22 | 22 | out=${1:-$root/tmp/image} | |
| 23 | - | tag=${IMAGE_TAG:-ermite-runner-ubuntu-24.04:latest} | |
| 23 | + | tag=${IMAGE_TAG:-ermite-runner-ubuntu-26.04:latest} | |
| 24 | 24 | slack=${EXT4_SLACK:-512} | |
| 25 | 25 | engine=${ENGINE:-} | |
| 26 | 26 | ||
| @@ -43,7 +43,7 @@ fi | |||
| 43 | 43 | ||
| 44 | 44 | mkdir -p "$out" | |
| 45 | 45 | out=$(cd "$out" && pwd) | |
| 46 | - | "$engine" build -t "$tag" "$root/images/ubuntu-24.04" | |
| 46 | + | "$engine" build -t "$tag" "$root/images/ubuntu-26.04" | |
| 47 | 47 | ||
| 48 | 48 | cid=$("$engine" create "$tag") | |
| 49 | 49 | tmp=$(mktemp -d) | |
| @@ -1,7 +1,7 @@ | |||||
| 1 | #!/usr/bin/env bash | 1 | #!/usr/bin/env bash | ||
| 2 | # SPDX-License-Identifier: MIT | 2 | # SPDX-License-Identifier: MIT | ||
| 3 | # | 3 | # | ||
| 4 | - | # Build the ermite-runner-ubuntu-24.04 image as an OCI image (container | 4 | + | # Build the ermite-runner-ubuntu-26.04 image as an OCI image (container |
| 5 | # isolation) and as a sparse ext4 base image (vm isolation). No root needed: | 5 | # isolation) and as a sparse ext4 base image (vm isolation). No root needed: | ||
| 6 | # the OCI build uses docker or podman (rootless is fine), the ext4 image is | 6 | # the OCI build uses docker or podman (rootless is fine), the ext4 image is | ||
| 7 | # written by `mkfs.ext4 -d` from the exported rootfs tarball. | 7 | # written by `mkfs.ext4 -d` from the exported rootfs tarball. | ||
| @@ -10,7 +10,7 @@ | |||||
| 10 | # | 10 | # | ||
| 11 | # Environment: | 11 | # Environment: | ||
| 12 | # ENGINE docker or podman (default: first found) | 12 | # ENGINE docker or podman (default: first found) | ||
| 13 | - | # IMAGE_TAG OCI tag (default ermite-runner-ubuntu-24.04:latest, the | 13 | + | # IMAGE_TAG OCI tag (default ermite-runner-ubuntu-26.04:latest, the |
| 14 | # default of ERMITE_RUNNER_IMAGE in container mode) | 14 | # default of ERMITE_RUNNER_IMAGE in container mode) | ||
| 15 | # EXT4_SLACK free space added to the base image in MiB (default 512) | 15 | # EXT4_SLACK free space added to the base image in MiB (default 512) | ||
| 16 | # | 16 | # | ||
| @@ -20,7 +20,7 @@ set -euo pipefail | |||||
| 20 | 20 | ||||
| 21 | root=$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd) | 21 | root=$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd) | ||
| 22 | out=${1:-$root/tmp/image} | 22 | out=${1:-$root/tmp/image} | ||
| 23 | - | tag=${IMAGE_TAG:-ermite-runner-ubuntu-24.04:latest} | 23 | + | tag=${IMAGE_TAG:-ermite-runner-ubuntu-26.04:latest} |
| 24 | slack=${EXT4_SLACK:-512} | 24 | slack=${EXT4_SLACK:-512} | ||
| 25 | engine=${ENGINE:-} | 25 | engine=${ENGINE:-} | ||
| 26 | 26 | ||||
| @@ -43,7 +43,7 @@ fi | |||||
| 43 | 43 | ||||
| 44 | mkdir -p "$out" | 44 | mkdir -p "$out" | ||
| 45 | out=$(cd "$out" && pwd) | 45 | out=$(cd "$out" && pwd) | ||
| 46 | - | "$engine" build -t "$tag" "$root/images/ubuntu-24.04" | 46 | + | "$engine" build -t "$tag" "$root/images/ubuntu-26.04" |
| 47 | 47 | ||||
| 48 | cid=$("$engine" create "$tag") | 48 | cid=$("$engine" create "$tag") | ||
| 49 | tmp=$(mktemp -d) | 49 | tmp=$(mktemp -d) | ||