mirror of
https://github.com/compiler-explorer/compiler-explorer.git
synced 2026-07-22 04:06:57 -04:00
Every CI run currently emits "Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24" runner annotations (visible on every job of the main build and the Windows build). These come from the runner at execution time, so the actionlint gate added in #8912 can't catch them: actionlint checks workflow files statically and has no knowledge of which Node runtime an action's implementation targets. This bumps every runner-flagged action to its latest major, all of which target node24: | Action | From | To | |---|---|---| | actions/checkout | v4 | v7 | | actions/setup-node | v4 | v7 | | actions/upload-artifact | v4 | v7 | | actions/download-artifact | v4 | v8 | | actions/setup-python | v5 | v7 | | actions/labeler | v5 | v6 | | actions/github-script | v7 | v9 | | github/codeql-action | v3 | v4 | | peter-evans/create-pull-request | v6 | v8 | | cypress-io/github-action | v6 | v7 | | browser-actions/setup-chrome | v1 | v2 | | codecov/codecov-action | v5 | v7 | | astral-sh/setup-uv | v6 | v8.3.2 (exact pin; from v8 they publish immutable releases only, no floating major tags) | The last three rows came from iterating: this branch's own push builds run the full workflow (including the real deploy path), and scanning their annotations after each round caught what the first sweep missed — our github-script uses, codecov-action (whose v5 pins a node20 github-script by SHA internally; their v6 fixed that), and setup-uv. codeql-action v3 additionally carries its own deprecation warning (sunset December 2026). **Behaviour changes checked against our usage:** - create-pull-request v7 renamed `git-token` to `branch-token` and removed the `PULL_REQUEST_NUMBER` env output: browserslist.yml uses neither. - setup-python v7 removed the `pip-install` input: check-infra-settings.yml doesn't use it. - github-script v9: `require('@actions/github')` no longer works inside scripts; neither of ours does that (one calls `github.rest.git.createRef`, the other requires only the core `fs` module). - setup-uv v7/v8 removed the `server-url` input and changed the manifest-file format: we pass no inputs. - setup-chrome v2 installs Chrome for Testing by default: fine (arguably better) for the Cypress frontend tests. - download-artifact v8 now errors on hash mismatch by default: a fix we want. - checkout v7 blocks fork-PR checkout under `pull_request_target`/`workflow_run` unless opted in: our only such workflows (label.yml, check-infra-settings-comment.yml) don't use checkout at all. - codecov-action v6 is their node24 bump; v7 only rotates their signing account. Our `token`/`verbose` usage is unaffected. **Deliberately left alone:** - `browser-actions/setup-firefox@v1`: latest release is still v1 (1.7.x, node24). - `wow-actions/potential-duplicates@v1`: upstream is unmaintained (last release 2022); no node24 version exists. Its warning will remain on duplicate-detection runs until we replace or drop it. - `jakejarvis/s3-sync-action@master`: a Docker action, unaffected by the Node runtime deprecation. **Validation:** - actionlint 1.7.12 (the pinned CI version) passes clean. - All PR checks green across two full rounds, including Cypress on Chrome for Testing and CodeQL v4. - Because pushes to any branch run the real deploy job, the complete chain (dist build → download-artifact v8 → sentry → S3 sync → github-script v9 tagging → post_deploy_check on admin-node) ran green for real. - Runner compatibility: these majors require Actions Runner >= 2.327.1; the self-hosted admin-node and ce fleet runners are all on 2.335.1 (confirmed from job logs). 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: mattgodbolt-molty <mattgodbolt-molty@users.noreply.github.com> Co-authored-by: Claude Fable 5 <noreply@anthropic.com>