Skip to content

ci: resolve the newest Node 24.x instead of the runner's cached one - #48

Merged
christianhuening merged 2 commits into
mainfrom
fix/ci-node-check-latest
Oct 24, 2026
Merged

christianhuening merged 2 commits into
mainfrom
fix/ci-node-check-latest

Conversation

@christianhuening

@christianhuening christianhuening commented Oct 24, 2026 •

Copy link
Copy Markdown
Contributor

Summary

CI was building and testing on a Node without the Node2Shell fix (CVE-2026-111497, Brotli decoder out-of-bounds write, fixed in 24.22.1). setup-node with a bare 24 takes whatever 24.x the runner image has cached, and ubuntu-latest still ships 24.21.0.

 - uses: actions/setup-node@v7
   with:
     node-version: 24
+    check-latest: true   # resolve against actions/node-versions on every run
     cache: pnpm

Applied to all three setup-node steps (fmt-and-lint, unit-web, e2e). node-version stays 24, so the Renovate node-version regex manager still matches.

Context: the shipped image is not affected. Runtime is FROM scratch with the Rust binary (no Node), and the only Brotli in it is the pure-Rust brotli crate, used by tower-http to compress responses, never to decode untrusted input. The Docker web-builder stage's node:24-alpine already resolves to 24.22.1. This PR covers CI only.

Evidence

  • Before (run 40069448810, vitest and fmt + clippy + tsc):
    Found in cache @ /opt/hostedtoolcache/node/24.21.0/x64
    After (run 40070550168, vitest, passed):
    Attempting to download 24.22.1...
    Acquiring 24.22.1 - x64 from https://github.com/actions/node-versions/releases/download/24.22.1-39619001896/node-24.22.1-linux-x64.tar.gz

cargo-deny fails on RUSTSEC-2026-0386/0387. That is unrelated to this PR: both advisories were published after main's last CI run (where cargo-deny passed), so any branch cut from main now hits them. #47 addresses them.

Merge Danger

Door: two-way

Revert the one line per job.

Blast Radius: CI-only

Each Node job now downloads Node (~seconds) when the toolcache is behind, and a new 24.x patch reaches CI the day it ships, without a Renovate PR.

🤖 Generated with Claude Code

christianhuening and others added 2 commits October 24, 2026 08:31
setup-node with a bare major takes whatever 24.x the runner image has in
its toolcache. On ubuntu-latest that is still 24.21.0, so CI kept running
on a Node without the CVE-2026-111497 (Node2Shell) Brotli fix that 24.22.1
shipped. check-latest makes it resolve against actions/node-versions on
every run; node-version stays at 24 so the Renovate regex still matches.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@christianhuening
christianhuening merged commit b2b8759 into main Oct 24, 2026
5 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.

1 participant