Skip to content

ci(MIC-95): upgrade Node container one major version at a time#480

Merged
mtiller merged 11 commits into
masterfrom
michaeltiller/mic-95-replace-node14-container-in-generate_site-job
Jun 29, 2026
Merged

ci(MIC-95): upgrade Node container one major version at a time#480
mtiller merged 11 commits into
masterfrom
michaeltiller/mic-95-replace-node14-container-in-generate_site-job

Conversation

@mtiller

@mtiller mtiller commented Jun 29, 2026

Copy link
Copy Markdown
Owner

Result

Climbed the entire Node ladder, one major per commit. Landing on node:26 (Current) for both generate_site and deploy_site — most future-proof choice; works today and won't need revisiting when 26 becomes Active LTS in Oct 2026.

Climbing log

Commit Container(s) Result Notes
Full Build label trigger n/a Validates pull_request flow
generate_site → node:16 16 baseline catch-up
generate_site → node:18 18 OpenSSL 3 / Webpack 4 — error:0308010C:digital envelope routines::unsupported
+ NODE_OPTIONS=--openssl-legacy-provider 18 remediation worked first try
generate_site → node:20 20
generate_site → node:22 22
generate_site → node:24 24
Settle both on node:22 22 / 22 (interim — see below)
Bump both to node:26 26 / 26 node:26 image dropped bundled yarn
+ corepack enable attempt 26 / 26 node:25+ dropped corepack too
+ npm install -g yarn 26 / 26 final

What's in the diff that matters

  1. generate_site container: node:14node:26
  2. deploy_site container: node:18node:26 (alignment, same runtime everywhere)
  3. npm install -g yarn step before make site — required because node:25+ images ship without yarn or corepack (corepack was deprecated in Node 25 and removed from the official image).
  4. NODE_OPTIONS=--openssl-legacy-provider env var on make site (required for Webpack 4 on Node 17+ until book-nextgen upgrades its build chain).
  5. pull_request trigger gated by Full Build label (the mechanism that let us iterate this PR end-to-end).

Future-proofing notes

  • node:26 becomes Active LTS in October 2026 — by landing now we skip the next bump cycle entirely.
  • The yarn-install workaround is a candidate to clean up when book-nextgen migrates off yarn 1.x classic.

Closes MIC-95.

@mtiller mtiller added the Full Build Trigger the full build+deploy workflow on this PR label Jun 29, 2026
mtiller added 2 commits June 28, 2026 23:11
The build/deploy workflow currently only runs on push to master, which
means risky CI changes (like the upcoming Node version bumps) can't be
proven in a PR — they only get tested after merge, when failure has
already shipped to Netlify.

Extends the trigger to `pull_request` events (opened/synchronize/
reopened/labeled), and gates each job with:

  if: github.event_name == 'push'
   || contains(github.event.pull_request.labels.*.name, 'Full Build')

Master pushes are unchanged. PRs run the full pipeline only when the
"Full Build" label is applied, keeping default PR overhead at zero.

Refs MIC-95.
@mtiller
mtiller force-pushed the michaeltiller/mic-95-replace-node14-container-in-generate_site-job branch from 1799c93 to 9a237f9 Compare June 29, 2026 03:11
@mtiller
mtiller marked this pull request as ready for review June 29, 2026 15:18
@mtiller
mtiller merged commit c48e28b into master Jun 29, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Full Build Trigger the full build+deploy workflow on this PR

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant