From 847e975e2bf5f98d9b4558780464e06b462a1d96 Mon Sep 17 00:00:00 2001 From: Michael Kriese Date: Fri, 9 Jan 2026 14:57:43 +0100 Subject: [PATCH 1/3] feat(cli)!: use node v24 (#5388) This reverts commit 53a3268b6f3ceab23d26ce2c469bc3e4b393b0df. --- tools/esbuild.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/esbuild.js b/tools/esbuild.js index 043dfeaee9..fa3224dafe 100644 --- a/tools/esbuild.js +++ b/tools/esbuild.js @@ -9,7 +9,7 @@ const esbuildPluginPino = __require('esbuild-plugin-pino'); shell.config.fatal = true; -const nodeVersion = 22; +const nodeVersion = 24; const version = process.env.CONTAINERBASE_VERSION ?? '0.0.0-PLACEHOLDER'; shell.rm('-rf', 'dist/docker'); From 0966c428f33b96597d65f66eb980a67d10c98ba0 Mon Sep 17 00:00:00 2001 From: Michael Kriese Date: Fri, 9 Jan 2026 15:03:03 +0100 Subject: [PATCH 2/3] feat!: drop `focal` support --- .github/workflows/build.yml | 1 - docs/custom-base-image.md | 2 +- docs/custom-registries.md | 2 -- src/cli/tools/dotnet.ts | 11 ---------- src/cli/tools/php/index.ts | 12 ----------- src/cli/tools/python/conan.ts | 2 -- src/cli/utils/common.ts | 3 +-- .../local/containerbase/tools/v2/erlang.sh | 3 +-- .../containerbase/tools/v2/powershell.sh | 3 +-- .../local/containerbase/tools/v2/python.sh | 3 +-- src/usr/local/containerbase/tools/v2/ruby.sh | 3 +-- src/usr/local/containerbase/tools/v2/swift.sh | 20 +------------------ src/usr/local/containerbase/util.sh | 3 +-- test/Dockerfile.base | 1 - test/Dockerfile.distro | 1 - 15 files changed, 8 insertions(+), 62 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 169bfdaf57..8bf7dc87e6 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -250,7 +250,6 @@ jobs: fail-fast: false matrix: distro: - - focal - jammy env: diff --git a/docs/custom-base-image.md b/docs/custom-base-image.md index c3f3d45fd2..89e99dee3b 100644 --- a/docs/custom-base-image.md +++ b/docs/custom-base-image.md @@ -1,7 +1,7 @@ # Custom base image The following sample can be used to create a `containerbase/base` based image which does not extend `containerbase/base` directly. -Currently only ubuntu focal, jammy and noble based amd64 distro are suported. +Currently only ubuntu jammy and noble based amd64 distro are suported. You can also use our containerbase from GitHub container registry as `ghcr.io/containerbase/base`. `containerbase/base` and `ghcr.io/containerbase/base` are exchangeble. diff --git a/docs/custom-registries.md b/docs/custom-registries.md index 262623c89c..5822b95dea 100644 --- a/docs/custom-registries.md +++ b/docs/custom-registries.md @@ -415,8 +415,6 @@ Samples: ```txt https://github.com/containerbase/node-prebuild/releases/download/18.12.0/node-18.12.0-jammy-x86_x64.tar.xz.sha512 https://github.com/containerbase/node-prebuild/releases/download/18.12.0/node-18.12.0-jammy-aarch64.tar.xz -https://github.com/containerbase/node-prebuild/releases/download/18.12.0/node-18.12.0-focal-x86_x64.tar.xz.sha512 -https://github.com/containerbase/node-prebuild/releases/download/18.12.0/node-18.12.0-focal-aarch64.tar.xz https://nodejs.org/dist/v20.0.0/SHASUMS256.txt https://nodejs.org/dist/v20.0.0/node-v20.0.0-linux-x64.tar.xz https://nodejs.org/dist/v20.0.0/node-v20.0.0-linux-arm64.tar.xz diff --git a/src/cli/tools/dotnet.ts b/src/cli/tools/dotnet.ts index 5c961f1ef2..8e952ef91c 100644 --- a/src/cli/tools/dotnet.ts +++ b/src/cli/tools/dotnet.ts @@ -18,17 +18,6 @@ export class DotnetPrepareService extends BasePrepareService { const distro = await getDistro(); switch (distro.versionCode) { - case 'focal': - await this.aptSvc.install( - 'libc6', - 'libgcc1', - 'libgssapi-krb5-2', - 'libicu66', - 'libssl1.1', - 'libstdc++6', - 'zlib1g', - ); - break; case 'jammy': await this.aptSvc.install( 'libc6', diff --git a/src/cli/tools/php/index.ts b/src/cli/tools/php/index.ts index 5cdd778984..7153517b02 100644 --- a/src/cli/tools/php/index.ts +++ b/src/cli/tools/php/index.ts @@ -20,18 +20,6 @@ export class PhpPrepareService extends BasePrepareService { const distro = await getDistro(); switch (distro.versionCode) { - case 'focal': - await this.aptSvc.install( - 'libjpeg-turbo8', - 'libmcrypt4', - 'libonig5', - 'libpng16-16', - 'libtidy5deb1', - 'libxslt1.1', - 'libzip5', - ); - break; - case 'jammy': case 'noble': await this.aptSvc.install( diff --git a/src/cli/tools/python/conan.ts b/src/cli/tools/python/conan.ts index 53a0f4a94b..95f20e04e6 100644 --- a/src/cli/tools/python/conan.ts +++ b/src/cli/tools/python/conan.ts @@ -71,8 +71,6 @@ function getArchitecture(arch: string): string { function getCompilerVersion(distro: Distro): string { switch (distro.versionCode) { - case 'focal': - return '9'; case 'jammy': return '11'; case 'noble': diff --git a/src/cli/utils/common.ts b/src/cli/utils/common.ts index 282c88a2f4..d4ebc2f4f0 100644 --- a/src/cli/utils/common.ts +++ b/src/cli/utils/common.ts @@ -22,14 +22,13 @@ export async function validateSystem(): Promise { const d = await (distro ??= readDistro()); switch (d.versionCode) { /* v8 ignore next -- hard to test */ - case 'focal': case 'jammy': case 'noble': break; default: logger.fatal( { distro: d }, - `Unsupported distro: ${d.versionCode}! Please use Ubuntu 'focal', 'jammy' or 'noble'.`, + `Unsupported distro: ${d.versionCode}! Please use Ubuntu 'jammy' or 'noble'.`, ); process.exit(1); } diff --git a/src/usr/local/containerbase/tools/v2/erlang.sh b/src/usr/local/containerbase/tools/v2/erlang.sh index 884b22c307..94d3b7ccbc 100644 --- a/src/usr/local/containerbase/tools/v2/erlang.sh +++ b/src/usr/local/containerbase/tools/v2/erlang.sh @@ -23,11 +23,10 @@ function check_tool_requirements () { local version_codename version_codename="$(get_distro)" case "${version_codename}" in - "focal");; "jammy");; "noble");; *) - echo "Tool '${TOOL_NAME}' not supported on: ${version_codename}! Please use ubuntu 'focal' or 'jammy'." >&2 + echo "Tool '${TOOL_NAME}' not supported on: ${version_codename}! Please use ubuntu 'jammy' or 'noble'." >&2 exit 1 ;; esac diff --git a/src/usr/local/containerbase/tools/v2/powershell.sh b/src/usr/local/containerbase/tools/v2/powershell.sh index af6b6df580..130e5ff930 100644 --- a/src/usr/local/containerbase/tools/v2/powershell.sh +++ b/src/usr/local/containerbase/tools/v2/powershell.sh @@ -5,11 +5,10 @@ function prepare_tool() { version_codename="$(get_distro)" case "${version_codename}" in - "focal") apt_install libc6 libgcc1 libgssapi-krb5-2 libicu66 libssl1.1 libstdc++6 zlib1g;; "jammy") apt_install libc6 libgcc1 libgssapi-krb5-2 libicu70 libssl3 libstdc++6 zlib1g;; "noble") apt_install libc6 libgcc1 libgssapi-krb5-2 libicu74 libssl3 libstdc++6 zlib1g;; *) - echo "Tool '${TOOL_NAME}' not supported on: ${version_codename}! Please use ubuntu 'focal' or 'jammy'." >&2 + echo "Tool '${TOOL_NAME}' not supported on: ${version_codename}! Please use ubuntu 'jammy' or 'noble'." >&2 exit 1 ;; esac diff --git a/src/usr/local/containerbase/tools/v2/python.sh b/src/usr/local/containerbase/tools/v2/python.sh index ce09a3939b..aae408c3a8 100644 --- a/src/usr/local/containerbase/tools/v2/python.sh +++ b/src/usr/local/containerbase/tools/v2/python.sh @@ -25,11 +25,10 @@ function prepare_tool() { version_codename="$(get_distro)" case "${version_codename}" in - "focal");; "jammy");; "noble");; *) - echo "Tool '${TOOL_NAME}' not supported on: ${version_codename}! Please use ubuntu 'focal' or 'jammy'." >&2 + echo "Tool '${TOOL_NAME}' not supported on: ${version_codename}! Please use ubuntu 'jammy' or 'noble'." >&2 exit 1 ;; esac diff --git a/src/usr/local/containerbase/tools/v2/ruby.sh b/src/usr/local/containerbase/tools/v2/ruby.sh index c60fc2c590..24bfd61d10 100644 --- a/src/usr/local/containerbase/tools/v2/ruby.sh +++ b/src/usr/local/containerbase/tools/v2/ruby.sh @@ -6,11 +6,10 @@ function prepare_tool() { version_codename="$(get_distro)" case "${version_codename}" in - "focal");; "jammy");; "noble");; *) - echo "Tool '${TOOL_NAME}' not supported on: ${version_codename}! Please use ubuntu 'focal' or 'jammy'." >&2 + echo "Tool '${TOOL_NAME}' not supported on: ${version_codename}! Please use ubuntu 'jammy' or 'noble'." >&2 exit 1 ;; esac diff --git a/src/usr/local/containerbase/tools/v2/swift.sh b/src/usr/local/containerbase/tools/v2/swift.sh index 3541b38b0c..9368dd7e2e 100644 --- a/src/usr/local/containerbase/tools/v2/swift.sh +++ b/src/usr/local/containerbase/tools/v2/swift.sh @@ -6,24 +6,6 @@ function prepare_tool() { version_codename="$(get_distro)" case "${version_codename}" in - "focal") - apt_install \ - binutils \ - gnupg2 \ - libc6-dev \ - libcurl4 \ - libedit2 \ - libgcc-9-dev \ - libpython2.7 \ - libsqlite3-0 \ - libstdc++-9-dev \ - libxml2 \ - libz3-dev \ - pkg-config \ - tzdata \ - uuid-dev \ - zlib1g-dev \ - ;; "jammy") apt_install \ binutils \ @@ -62,7 +44,7 @@ function prepare_tool() { zlib1g-dev \ ;; *) - echo "Tool '${TOOL_NAME}' not supported on: ${version_codename}! Please use ubuntu 'focal' or 'jammy'." >&2 + echo "Tool '${TOOL_NAME}' not supported on: ${version_codename}! Please use ubuntu 'jammy' or 'noble'." >&2 exit 1 ;; esac diff --git a/src/usr/local/containerbase/util.sh b/src/usr/local/containerbase/util.sh index f8b2a4af61..b7a6b1d77e 100644 --- a/src/usr/local/containerbase/util.sh +++ b/src/usr/local/containerbase/util.sh @@ -148,11 +148,10 @@ function require_arch () { function require_distro () { case "$DISTRO_CODENAME" in - "focal") ;; #supported "jammy") ;; #supported "noble") ;; #supported *) - echo "Distro not supported: ${DISTRO_CODENAME}! Please use ubuntu 'focal', 'jammy' or 'noble'." >&2 + echo "Distro not supported: ${DISTRO_CODENAME}! Please use ubuntu 'jammy' or 'noble'." >&2 exit 1 ;; esac diff --git a/test/Dockerfile.base b/test/Dockerfile.base index 0116853f8d..061db07187 100644 --- a/test/Dockerfile.base +++ b/test/Dockerfile.base @@ -4,7 +4,6 @@ ARG BASE_IMAGE=latest #-------------------------------------- # Images #-------------------------------------- -FROM ghcr.io/containerbase/ubuntu:20.04 AS focal FROM ghcr.io/containerbase/ubuntu:22.04 AS jammy FROM ghcr.io/containerbase/ubuntu:24.04 AS noble diff --git a/test/Dockerfile.distro b/test/Dockerfile.distro index 4491b2daec..e9f6f7d9c2 100644 --- a/test/Dockerfile.distro +++ b/test/Dockerfile.distro @@ -4,7 +4,6 @@ ARG BASE_IMAGE=latest #-------------------------------------- # Images #-------------------------------------- -FROM ghcr.io/containerbase/ubuntu:20.04 AS focal FROM ghcr.io/containerbase/ubuntu:22.04 AS jammy FROM ghcr.io/containerbase/ubuntu:24.04 AS noble From 517b3194eca557d571e9e8688d99396e2ce1af57 Mon Sep 17 00:00:00 2001 From: Michael Kriese Date: Mon, 19 Jan 2026 13:30:56 +0100 Subject: [PATCH 3/3] build: require node v22+ (#5762) --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 52c50e71b9..462e5563f0 100644 --- a/package.json +++ b/package.json @@ -117,7 +117,7 @@ }, "packageManager": "pnpm@10.28.0", "engines": { - "node": "^20.9.0 || ^22.11.0 || >=24.10.0", + "node": "^22.11.0 || >=24.10.0", "pnpm": "^10.0.0" }, "pnpm": {