Repository navigation
Move Docker images and CI from Node.js 20 to Node.js 24 - #316
Merged
Merged
Conversation
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
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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-alpinebecomesnode:24-alpinein both the builder and runtime stages..github/workflows/ci.yml,.github/workflows/publish-images.yml:NODE_VERSIONgoes from'20'to'24'.CHANGELOG.md: entry under## [Unreleased].engines.nodestays>=20.0.0for 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):
docker/docker-compose.build.ymland started postgres, redis, backend, worker and frontend. All were healthy, and/healthreturned{"status":"ok","version":"1.5.0"}. Migrations ran through061_terms_acceptance,/and/loginreturned 200, and the worker scheduled its jobs.bcryptloads and hashes in the runtime image.pnpm install --frozen-lockfileand the shared and reservoir builds succeed. Backend and frontendtypecheckpass. Shared and frontend unit tests pass.pnpm test:ci:coverageagainst 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.