Skip to content

build: move CI and Docker to Node.js 22 and 24 - #470

Merged
uniqueg merged 8 commits into
devfrom
build/node-22-24
Oct 27, 2026
Merged

uniqueg merged 8 commits into
devfrom
build/node-22-24

Conversation

@uniqueg

@uniqueg uniqueg commented Oct 26, 2026 •

Copy link
Copy Markdown
Member

Summary

Second of four stacked pull requests for #464. Stacked on #469: merge #469 first; until then this diff also shows its commits (only the last commit, build: move CI and Docker to Node.js 22 and 24, belongs here).

Node.js 18 (EOL 2025-04) and 20 (EOL 2026-04) are end of life:

  • CI tests on Node.js 22 and 24; linting runs on 24.
  • The release workflow runs on 24 (npm 11, which trusted publishing needs, see the next PR).
  • The docs image builds on node:24-alpine.
  • README: "Node.js 22 or later (CI tests 22 and 24)".

engines.node (>=18.0.0) and packageManager (npm@9.2.0) stay as they are: raising engines changes what consumers are told, which is a separate decision.

Closes #466

Verification

  • Node.js 24.22.1 / npm 11.19.1, locally: npm ci (leaves package-lock.json unchanged), npm run build, npm run lint pass.
  • docker build . on node:24-alpine: passes.
  • The reviewer subagent also checked npm 11 against the release flow: npm version --no-git-tag-version, npm install after the bump (no lockfile churn) and changeset publish (passes --tag, so npm 11's prerelease guard doesn't trigger).
  • Tests did not run locally (Playwright browser downloads fail behind the sandbox proxy). In CI, Test checks fail before and after this change because packages without test files fail wtr ("Could not find any test files"); feat: add surface, font and dark mode controls #446 fixes the test scripts. See chore: remove leftovers, pin actions #469.

Declined review findings

  • Dockerfile: npm run build --filter=ecc-docs... doesn't pass --filter to turbo (npm 11 warns and builds all workspaces). Pre-existing; the Dockerfile is only bumped here, as agreed (docs hosting is being moved separately). Fix when the docs build is reworked: npm run build -- --filter=ecc-docs....
  • .npmrc: auto-install-peers is a pnpm option, npm 10/11 warn about it. Pre-existing, no effect; out of scope.
  • apps/documentation: @types/node 18.11.10. Pre-existing, harmless; follow-up.

🤖 Generated with Claude Code

Summary by Sourcery

Modernize CI, release, Docker, and development requirements for current Node.js versions.

Enhancements:

  • Update project development and release environments to use Node.js 22 and 24, with linting and publishing on Node.js 24.
  • Document Node.js 22 as the minimum supported version for development and testing.

Build:

  • Use Node.js 24 Alpine as the Docker image base.

CI:

  • Run pull-request evaluation against the development branch and test on Node.js 22 and 24.

uniqueg and others added 6 commits October 26, 2026 15:20
Remove the changesets versioning workflow (changesets/action without a
publish input, which only added a Release check to every commit on
main), the generated .changeset/README.md and the root CHANGELOG.md
stub. changeset publish stays the publish command.

Refs #465

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The builder stage of the docs image copies the whole build context.
Send only what the build needs (allow list: workspaces, build scripts,
root manifests), so that local .env* files and other local files never
reach the image, and drop dependencies and build output within.

Closes #463

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Pin every action to a full commit SHA on its current major version
(checkout v7, setup-node v7, cache v6, semantic PR title v6, ssh-agent
v0.10, push action v1.3.0 instead of master), with Dependabot keeping
the pins up to date. Replace the node_modules caches, whose key hashed a
file that doesn't exist and which used ::set-output, by the npm cache
of setup-node in CI; releases use no dependency cache. Drop the
force-with-lease input of the push action, which doesn't exist (the
input is force_with_lease) and so never had an effect.

Refs #465

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Give Dependabot pull requests a ci: prefix, so that their titles pass
the PR title check. Keep the commented-out release tests job as it was
and state the release cache comment once.

Refs #465

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
ubuntu-latest now is Ubuntu 26.04, on which Playwright 1.56 can't
install its browsers, so every test job fails (unrelated to the other
changes). Pin the test job to ubuntu-24.04 until Playwright is
upgraded.

Refs #465

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Node.js 18 and 20 are end of life. Test on 22 and 24, lint and release
on 24 (npm 11, needed for trusted publishing), build the docs image on
node:24-alpine and update the development prerequisites in the README.
engines and packageManager stay as they are.

Closes #466

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@vercel

vercel Bot commented Oct 26, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
elixir-cloud-components Error Error Oct 26, 2026 4:30pm UTC

@sourcery-ai

sourcery-ai Bot commented Oct 26, 2026 •

Copy link
Copy Markdown
Contributor

Reviewer's Guide

Moves CI, publishing, and Docker builds from Node.js 18/20-era tooling to Node.js 22/24, while modernizing caching, pinning GitHub Actions to immutable SHAs, constraining the Playwright runner image, and updating project documentation and maintenance configuration.

File-Level Changes

Change Details Files
Standardize CI, release automation, and action dependencies on Node.js 22/24 with pinned GitHub Actions.
  • Run linting and release jobs on Node.js 24 and test jobs on Node.js 22 and 24.
  • Replace custom node_modules caching with setup-node npm caching, while disabling dependency caching in release jobs.
  • Pin workflow actions to immutable commit SHAs and update action versions.
  • Run Playwright tests on Ubuntu 24.04 pending compatibility with the newer runner image.
  • Remove the obsolete version workflow and update release push behavior.
.github/workflows/pr_evaluation.yml
.github/workflows/publish.yml
.github/workflows/version.yml
Update the documented and containerized development baseline to Node.js 22/24.
  • Use node:24-alpine for Docker builds.
  • Document Node.js 22 or later as the prerequisite and note the CI versions tested.
Dockerfile
README.md
Add repository maintenance configuration and remove obsolete repository artifacts.
  • Configure monthly grouped Dependabot updates for GitHub Actions.
  • Add Docker build exclusions.
  • Delete the changeset README and existing changelog.
.github/dependabot.yml
.dockerignore
.changeset/README.md
CHANGELOG.md

Assessment against linked issues

Issue Objective Addressed Explanation
#466 Run CI tests on Node.js 22 and 24, and run linting and release workflows on Node.js 24. ✅
#466 Build the documentation Docker image using Node.js 24 and remove Node.js 18 or 20 references from workflows and the Dockerfile. ✅
#466 Update the README’s development prerequisite to Node.js 22 or later. ✅

Possibly linked issues


Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an
    issue from a review comment by replying to it. You can also reply to a
    review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time. You can also comment
    @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time exactly where you
    want it. You can also comment @sourcery-ai summary on the pull request to
    (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
    request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
    pull request to resolve all Sourcery comments. Useful if you've already
    addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
    request to dismiss all existing Sourcery reviews. Especially useful if you
    want to start fresh with a new review - don't forget to comment
    @sourcery-ai review to trigger a new review!

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request
    summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

@changeset-bot

changeset-bot Bot commented Oct 26, 2026

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: b989ff0

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@uniqueg
uniqueg marked this pull request as ready for review October 26, 2026 18:24
sourcery-ai[bot]
sourcery-ai Bot previously approved these changes Oct 26, 2026

@sourcery-ai sourcery-ai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey - I've reviewed your changes and they look great!

Sourcery assessment

Approved.


Sourcery is free for open source - if you like our reviews please consider sharing them ✨

Keep Node.js 24 (and 22/24 in the test matrix) in the conflicting
setup-node steps, and run PR Evaluation on pull requests to `dev`, the
default branch now.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@sourcery-ai
sourcery-ai Bot dismissed their stale review October 27, 2026 02:44

Sourcery withdrew this approval because the latest commits introduced blocking findings.

@uniqueg
uniqueg merged commit 613619a into dev Oct 27, 2026
10 of 11 checks passed
@uniqueg
uniqueg deleted the build/node-22-24 branch October 27, 2026 02:51
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.

build: move CI and Docker to Node.js 22 and 24

1 participant