Skip to content

ci: set up Node before the classify job runs the classifier - #2102

Merged
mrbobbytables merged 1 commit into
mainfrom
ci/classify-setup-node
Nov 3, 2026
Merged

mrbobbytables merged 1 commit into
mainfrom
ci/classify-setup-node

Conversation

@mrbobbytables

Copy link
Copy Markdown
Member

The classify job in .github/workflows/ci.yml gates every other job (needs: classify) and ran node with no setup step, inheriting whatever runtime the runner image shipped. Since 2026-11-02 15:52Z every run routed to the CNCF self-hosted gpus runner group fails it with node: command not found (exit 127) while the four jobs using setup-node-deps pass on the same machines (runs 41475921935, 41479256008).

Remit: a required CI check failing on main and on every open PR whenever a run lands on a self-hosted runner.

What changed

  • ci.yml: a bare pinned actions/setup-node step (same SHA as setup-node-deps, node-version: '22') before "Classify changed documents". The classifier imports only node: builtins, so no npm ci is needed and the job stays fast. The literal major is checked for parity with the devcontainer and engines by tests/dev-environment.test.mjs.
  • tests/ci-node-runtime-setup.test.mjs: the contract from test: require a Node setup step before a job runs node #2097, carried here so it lands with the fix it pointed at. Every workflow step that invokes node/npm/npx must be preceded in its job by a Node setup step (directly or via a local composite action). The classify exemption is removed, leaving NODE_SETUP_EXEMPT_STEPS empty; its staleness guard would otherwise fail on this change.
  • tests/content-only-ci-workflow.test.mjs: find the classify step by name rather than index.

Verification

  • node --test tests/ci-node-runtime-setup.test.mjs: 7/7 pass; 6/1 with the ci.yml change stashed
  • npm run test:unit:coverage:check: pass, gate exit 0
  • check:duplication, Prettier and ESLint on the touched files: pass

Fixes #2096
Refs #2097 (folds its test in; that PR can be closed once this merges)

The classify job in ci.yml gates every other job through `needs: classify`
and ran `node` with no setup step, so it inherited whatever runtime the
runner image shipped. Since 2026-11-02 runs routed to the CNCF self-hosted
`gpus` runner group, whose ubuntu-24.04 image ships no `node`, fail with
exit 127 while every job that uses setup-node-deps passes on the same
machines. Add a bare pinned actions/setup-node step: the classifier imports
only `node:` builtins, so it needs a runtime but no `npm ci`.

Carry the contract from #2097 (tests/ci-node-runtime-setup.test.mjs): every
workflow step that invokes node, npm or npx must be preceded in its job by a
step that installs Node, directly or through a local composite action. Its
exemption for the classify step is removed, since this change is the fix it
pointed at, leaving the allowlist empty. The content-only workflow test now
finds the classify step by name instead of by position.

Remit: a required CI check failing on main and on every open PR whenever a
run lands on a self-hosted runner.

Fixes #2096
Refs #2097

Co-authored-by: hivecommons-hive[bot] <hivecommons-hive[bot]@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Signed-off-by: mrbobbytables <mrbobbytables@users.noreply.github.com>
@netlify

netlify Bot commented Nov 3, 2026 •

Copy link
Copy Markdown

✅ Deploy Preview for endusers ready!

Name Link
🔨 Latest commit 5bbbc17
🔍 Latest deploy log https://app.netlify.com/projects/endusers/deploys/6aea21b7e8c6c6be6af0155f
😎 Deploy Preview https://deploy-preview-2102--endusers.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@mrbobbytables
mrbobbytables merged commit 08a585b into main Nov 3, 2026
15 checks passed
@mrbobbytables
mrbobbytables deleted the ci/classify-setup-node branch November 3, 2026 18:15
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.

[quality] ci.yml classify job runs node with no Node setup and fails on self-hosted ubuntu-24.04 runners

1 participant