Skip to content

ci: move GitHub Actions to their Node 24 majors - #82

Merged
mmcky merged 2 commits into
mainfrom
maint/node24-actions
Sep 18, 2026
Merged

mmcky merged 2 commits into
mainfrom
maint/node24-actions

Conversation

@mmcky

@mmcky mmcky commented Sep 18, 2026 •

Copy link
Copy Markdown
Contributor

Moves every GitHub Actions pin in this repository onto its Node 24 major, moves the build job's own Node from 20.x to 24, and adds a Dependabot config so the pins stay current. Node 20 reached end-of-life on 2026-04-30, and runners have been forcing node20-declared actions onto Node 24 since June, which is why every run here currently carries the "Node 20 is being deprecated" annotation. This is part of the fleet-wide Node 24 upgrade approved on 2026-09-18.

Pins

Workflow Action From To Runtime, from -> to
ci.yml, data-url-guard.yml actions/checkout v4 (= v4.4.0) v7 (= v7.0.1) node20 -> node24
ci.yml actions/setup-node v4 (= v4.4.0) v7 (= v7.0.0) node20 -> node24
ci.yml actions/github-script v7 (= v7.1.0) v9 (= v9.0.0) node20 -> node24
ci.yml actions/upload-pages-artifact v3 (= v3.0.1) v5 (= v5.0.0) composite over upload-artifact v4 (node20) -> composite over upload-artifact v7.0.0 (node24)
ci.yml actions/deploy-pages v4 (= v4.0.5) v5 (= v5.0.1) node20 -> node24
ci.yml, job build-and-deploy setup-node node-version 20.x 24 the Node that runs mystmd and the Netlify CLI

Each target was checked by reading its action.yml at the pinned tag: runs.using is node24 for all of them except upload-pages-artifact, which is composite and whose only inner uses: is actions/upload-artifact at the v7.0.0 SHA, itself node24.

What crossing these majors changes here

  • checkout v7: since v6 the token is stored under $RUNNER_TEMP rather than in .git/config, and nothing here reads it from there. The v7 fork-PR block applies only to pull_request_target and workflow_run, which neither workflow uses. The ref, token and submodules inputs are unchanged.
  • setup-node v7: automatic caching needs a packageManager field in package.json, and this repository has no package.json. always-auth and the placeholder NODE_AUTH_TOKEN are gone, and neither workflow sets always-auth or registry-url.
  • github-script v9: the preview-comment script uses only github.rest.issues.* and context, so the ESM-only require('@actions/github') change and the injected getOctokit do not touch it.
  • upload-pages-artifact v5: dotfiles are now left out unless include-hidden-files: true is set. The archive listing from the last main deploy (run 35028367716, 1,596 entries) has no dotfiles in it, so nothing currently published is dropped.
  • deploy-pages v5: runtime change only.
  • Node 24 for the job: the inline comment in ci.yml says mystmd 1.9.1 needs Node 20 or later, which still holds; this PR's build shows it running on 24.

Dependabot

Adds .github/dependabot.yml for the github-actions ecosystem, weekly, with the two groups QuantEcon/actions uses (minor and patch together, majors on their own), so there are at most two update PRs a week. There is no conda stanza because this repository has no environment.yml. This is the lecture-wasm half of item 1 in QuantEcon/workspace-lectures#59; data-lectures carries the other half, so that issue stays open.

What this PR's CI proves, and what only the merge run proves

Run by this PR's own CI: both changed workflows run on pull_request. data-url-guard.yml exercises checkout v7. ci.yml's PR path exercises checkout v7, setup-node v7 with Node 24, the mystmd build on Node 24, upload-pages-artifact v5, the Netlify CLI on Node 24 with the preview deploy, and github-script v9 posting the preview comment.

Proven only after merge: deploy-pages v5 and the push-to-main build (the one with BASE_URL set) run only on push to main. The merge run is the proof, and it publishes: it deploys the live site at https://quantecon.github.io/lecture-wasm/. If that run goes red, revert this PR rather than patching forward on main. The Dependabot config also takes effect only once it is on main.

Result of this PR's run: build-and-deploy and data-url-guard both passed. The job log shows every new pin downloaded at its tag's SHA, Node v24.20.0, the Pages archive uploaded through upload-artifact v7.0.0 with the same 1,596 entries as the last main deploy and no dotfiles, the Netlify preview deployed, and the preview comment posted by github-script v9. The "Node 20 is being deprecated" annotation no longer appears. The four beautiful-dodol-cb9543 checks from the Netlify app (its own Git-integration build, separate from the CLI preview this workflow deploys) fail with "Deploy failed", as they do on every recent PR here, including the merged #77, #78, #80 and the open #81, so they are unrelated to this change.

Known exceptions: none in this repository. The fleet's one approved hold-back, rossjrw/pr-preview-action (kept until its upstream node24 release, review date 2026-10-31), is not used here.

🤖 Generated with Claude Code

Node 20 reached end-of-life on 2026-04-30 and GitHub's own actions now
ship node24 majors. Moves every pin in ci.yml and data-url-guard.yml to
its current major, each of which declares node24 in its action.yml (for
the composite upload-pages-artifact, its inner upload-artifact v7.0.0
does):

- actions/checkout v4 -> v7
- actions/setup-node v4 -> v7
- actions/github-script v7 -> v9
- actions/upload-pages-artifact v3 -> v5
- actions/deploy-pages v4 -> v5

Also moves the job's own Node from 20.x (end-of-life) to 24, and adds a
grouped weekly github-actions Dependabot config so pins stay current.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Copilot AI lite review requested due to automatic review settings September 18, 2026 07:24
@netlify

netlify Bot commented Sep 18, 2026 •

Copy link
Copy Markdown

❌ Deploy Preview for beautiful-dodol-cb9543 failed.

Name Link
🔨 Latest commit c834ed4
🔍 Latest deploy log https://app.netlify.com/projects/beautiful-dodol-cb9543/deploys/6aad12c08ff0b30008794d9c

@github-actions

Copy link
Copy Markdown

📖 Netlify Preview Ready!

Preview URL: https://pr-82--beautiful-dodol-cb9543.netlify.app (cc52c10)

✨ Browse the preview at the URL above.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🟡 Changes recommended

The CI workflow’s node-version: 24 should be expressed as a version spec (e.g., 24.x) to avoid accidentally pinning an exact Node version and to match the prior 20.x behavior.

Get a fresh assessment by requesting another Copilot review.

Pull request overview

This PR updates the repository’s GitHub Actions workflows to Node 24–compatible major versions (and runs the build job itself on Node 24) to eliminate Node 20 deprecation warnings, and adds Dependabot configuration to keep action pins current going forward.

Changes:

  • Bump GitHub Actions used in workflows (checkout, setup-node, upload-pages-artifact, deploy-pages, github-script) to their Node 24 majors.
  • Update the CI job’s Node version from 20.x to Node 24.
  • Add .github/dependabot.yml to maintain GitHub Actions dependency updates with grouped minor/patch vs major PRs.
File summaries
File Description
.github/workflows/data-url-guard.yml Updates checkout action to the Node 24 major.
.github/workflows/ci.yml Moves workflow action majors to Node 24 and updates the job’s Node version selection.
.github/dependabot.yml Adds Dependabot config to keep GitHub Actions pins up to date with grouped updates.
Review details
  • Files reviewed: 3/3 changed files
  • Comments generated: 1
  • Review effort level: Lite

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread .github/workflows/ci.yml
Matches the quoted '24' used across the rest of the fleet's Node 24
move. Behaviour is unchanged: setup-node treats a bare major as a
semver range and resolves the latest 24.x, as 20.x did before.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown

📖 Netlify Preview Ready!

Preview URL: https://pr-82--beautiful-dodol-cb9543.netlify.app (c834ed4)

✨ Browse the preview at the URL above.

@mmcky
mmcky merged commit 669c65f into main Sep 18, 2026
2 of 6 checks passed
@mmcky
mmcky deleted the maint/node24-actions branch September 18, 2026 11:23
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.

2 participants