From 02cf88d0dd16fbddbb4c75b5956e61584c19f736 Mon Sep 17 00:00:00 2001 From: Jarvis Date: Mon, 22 Jun 2026 19:41:42 -0500 Subject: [PATCH] chore(ci): bump ci-base image node 22 -> 24-alpine Follow-up to the CI cache work (#635/#637), sequenced separately so the runtime-version change carries zero cache variables. node:24 is Active LTS; node:26 is held until it reaches LTS (Oct 2026) since the Current line risks node-gyp native-module breakage (better-sqlite3, canvas, sharp, node-pty compile from source on the musl runner). Only Dockerfile.ci's base changes; ci.yml/publish.yml comments updated for accuracy. The ci-base image rebuilds automatically on merge (the Dockerfile.ci path filter in ci-image.yml). Co-Authored-By: Claude Opus 4.8 --- .woodpecker/ci.yml | 2 +- .woodpecker/publish.yml | 2 +- Dockerfile.ci | 10 ++++++---- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/.woodpecker/ci.yml b/.woodpecker/ci.yml index 46a839f..ce4d4da 100644 --- a/.woodpecker/ci.yml +++ b/.woodpecker/ci.yml @@ -1,5 +1,5 @@ # &node_image is the pre-baked CI base built by .woodpecker/ci-image.yml: -# node:22-alpine + python3/make/g++/postgresql-client + pnpm + a warm pnpm +# node:24-alpine + python3/make/g++/postgresql-client + pnpm + a warm pnpm # store. The install step resolves from the baked store (--prefer-offline) # instead of paying a ~731s cold fetch + native compile every run. variables: diff --git a/.woodpecker/publish.yml b/.woodpecker/publish.yml index 9adc6e3..cdc84d0 100644 --- a/.woodpecker/publish.yml +++ b/.woodpecker/publish.yml @@ -2,7 +2,7 @@ # Runs only on main branch push/tag variables: - # Pre-baked CI base (see .woodpecker/ci-image.yml): node:22-alpine + + # Pre-baked CI base (see .woodpecker/ci-image.yml): node:24-alpine + # toolchain + warm pnpm store. Kills the second cold install publish pays. - &node_image 'git.mosaicstack.dev/mosaicstack/stack/ci-base:latest' - &enable_pnpm 'corepack enable' diff --git a/Dockerfile.ci b/Dockerfile.ci index b0f8b81..4bb9d7a 100644 --- a/Dockerfile.ci +++ b/Dockerfile.ci @@ -14,10 +14,12 @@ # Rebuilt only when `pnpm-lock.yaml` or this Dockerfile change # (see .woodpecker/ci-image.yml). # -# Node version is intentionally pinned to 22 (Active LTS at time of writing). -# The node:22 -> node:24 bump lands as a SEPARATE follow-up PR so the cache -# change carries zero runtime-version variables. -FROM node:22-alpine +# Node version is pinned to 24 (Active LTS). This is the follow-up bump from +# node:22 — sequenced AFTER the CI cache work landed so the runtime change +# carries zero cache variables. node:26 stays held until it reaches LTS +# (Oct 2026); the Current line risks native-module (node-gyp) breakage on a +# runner that compiles better-sqlite3 / canvas / sharp / node-pty from source. +FROM node:24-alpine # Native toolchain required to compile node-gyp deps on musl, plus the # postgresql-client used by the test step's pg_isready readiness probe. `bash` -- 2.49.1