Skip to content

Move Docker images and CI from Node.js 20 to Node.js 24 - #316

Merged
Polliog merged 1 commit into
logtide-dev:developfrom
veteranbv:chore/node-24-runtime
Oct 23, 2026
Merged

Polliog merged 1 commit into
logtide-dev:developfrom
veteranbv:chore/node-24-runtime

Conversation

@veteranbv

@veteranbv veteranbv commented Oct 22, 2026 •

Copy link
Copy Markdown

Summary

Moves the backend and frontend Docker images, and CI, from Node.js 20 to Node.js 24. Closes #315.

Node 20 reached end of life on 2026-04-30. The October 2026 Node.js security release (CVE-2026-111497, CVE-2026-105483, CVE-2026-106069 and others) has no 20.x release, so the published images (1.5.0 runs Node 20.20.2) will not receive those fixes.

  • packages/backend/Dockerfile, packages/frontend/Dockerfile: node:20-alpine becomes node:24-alpine in both the builder and runtime stages.
  • .github/workflows/ci.yml, .github/workflows/publish-images.yml: NODE_VERSION goes from '20' to '24'.
  • CHANGELOG.md: entry under ## [Unreleased].

engines.node stays >=20.0.0 for source installs. I asked in #315 whether you want that floor raised here or separately.

Tenant safety

Not applicable: no queries, endpoints or background jobs change. This only changes the Node.js runtime the images and CI use.

Contributor License Agreement

Testing

All on Node 24.22.1 (amd64):

  • Built both images from docker/docker-compose.build.yml and started postgres, redis, backend, worker and frontend. All were healthy, and /health returned {"status":"ok","version":"1.5.0"}. Migrations ran through 061_terms_acceptance, / and /login returned 200, and the worker scheduled its jobs.
  • bcrypt loads and hashes in the runtime image.
  • pnpm install --frozen-lockfile and the shared and reservoir builds succeed. Backend and frontend typecheck pass. Shared and frontend unit tests pass.
  • Backend pnpm test:ci:coverage against timescaledb (pg16), redis 7 and mailhog: 305 files and 5428 tests passed, with coverage of 88.38% statements, 81.76% branches, 92.07% functions and 89.57% lines.

Not run locally: the reservoir suite (ClickHouse and MongoDB) and the Playwright E2E tests. CI covers both.

Node.js 20 reached end of life on 2026-04-30 and is not covered by the
October 2026 security release. The backend and frontend images run on
node:24-alpine (LTS until 2028-04-30) and CI and the image publishing
workflow build and test on Node 24.

Closes logtide-dev#315
@CLAassistant

CLAassistant commented Oct 22, 2026 •

Copy link
Copy Markdown

CLA assistant check
All committers have signed the CLA.

@codecov

codecov Bot commented Oct 23, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@Polliog
Polliog merged commit aaa0280 into logtide-dev:develop Oct 23, 2026
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants