Repository navigation
Update GitHub Actions to Node.js 24 releases; remove dead custom-runner workflow - #1946
AustinBenoit wants to merge 3 commits into
Conversation
GitHub is forcing actions that target Node.js 20 to run on Node.js 24 (https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/). Bump every pinned action to its latest release (all `runs.using: node24`), keeping full-SHA pins with ratchet version comments: - actions/checkout v3 -> v7 - actions/upload-artifact v4 -> v7 - actions/download-artifact v4 -> v8 - actions/setup-python v4 -> v7 - actions/setup-java v3/v4 -> v6 - actions/setup-node v3 -> v7 - actions/cache v3 -> v6 - actions/create-github-app-token v3.2 -> v3.3 - nick-invision/retry v2 -> nick-fields/retry v4 (repo was renamed) - microsoft/setup-msbuild v1.1 -> v3 - geekyeggo/delete-artifact v2 -> v6 - styfle/cancel-workflow-action 0.8.0 -> 0.13.1 - FirebaseExtended/github-actions/firebase-test-lab v1.4 -> v1.5 Replace unmaintained node12 actions that have no Node.js 24 release with equivalent `gh` CLI steps: - scherermichael-oss/action-has-permission, lannonbr/repo-permission-check-action -> `gh api .../collaborators/<actor>/permission` - andymckay/cancel-action -> `gh run cancel` - actions-ecosystem/action-add-labels -> `gh api POST .../issues/<n>/labels` - buildsville/add-remove-label -> `gh pr edit --remove-label` - KhannaAbhinav/random-selector-action + itsOliverBott/assign-pr-reviewers -> `shuf` + `gh api POST .../pulls/<n>/requested_reviewers`
This workflow_dispatch-only workflow targeted two self-hosted macOS runners (fplmac1, fplmac2) that are no longer registered to the repo (the repo has zero self-hosted runners). It was also never functional: its job condition reads `github.event.input` (singular), which is not a valid context and always evaluates empty, so the job was always skipped, and its steps only echo the commands they describe.
|
Note Gemini is unable to generate a review for this pull request due to the file types involved not being currently supported. |
❌ Integration test FAILEDRequested by @AustinBenoit on commit d942bf4
Add flaky tests to go/fpl-cpp-flake-tracker |
Workflow verification on this branch ✅ completeEvery workflow touched by this PR was exercised on
Notes
|
…rite The replaced lannonbr/repo-permission-check-action was effectively a no-op: it read its input as `permision` (typo), so the required level was never set and every actor passed, and a 404 for non-collaborator actors (bots, departed users) was an unhandled rejection that did not fail the step. Enforcing it for real broke the chained run dispatched by firebase-workflow-trigger[bot] from the packaging workflow, since bots are not collaborators. Skip the check for bot actors (they already need actions:write to dispatch) and for scheduled runs (whose actor is whoever last committed the workflow file), and accept write as well as admin so existing write-level team members can still trigger tests.
Why
GitHub is forcing actions that declare Node.js 20 to run on Node.js 24, producing warnings like:
See https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/. An audit of every
uses:in this repo showed almost all pins were on node16/node20 releases, not just the two in the warning.What
1. Bump every pinned action to its latest release (all
runs.using: node24). Full-SHA pins with# ratchet:version comments are kept, matching the existing convention. Each new SHA'saction.ymlwas verified to declarenode24.actions/checkoutactions/upload-artifactactions/download-artifactactions/setup-pythonactions/setup-javaactions/setup-nodeactions/cacheactions/create-github-app-tokennick-invision/retrynick-fields/retryv4 (repo was renamed)microsoft/setup-msbuildgeekyeggo/delete-artifactstyfle/cancel-workflow-actionFirebaseExtended/github-actions/firebase-test-labauth/setup-gcloudare now node24 and SHA-pinned)2. Replace unmaintained node12 actions that have no Node.js 24 release with equivalent
ghCLI steps (same tokens and permissions, no third-party code to pin):scherermichael-oss/action-has-permission(checks_secure.yml)gh api repos/…/collaborators/$ACTOR/permission→ setshas-permissionoutputlannonbr/repo-permission-check-action(integration_tests.yml)adminandymckay/cancel-actiongh run cancel $GITHUB_RUN_IDactions-ecosystem/action-add-labelsgh api POST repos/…/issues/$PR/labelsbuildsville/add-remove-labelgh pr edit --remove-labelKhannaAbhinav/random-selector-action+itsOliverBott/assign-pr-reviewersjq … | shuf -n 1+gh api POST repos/…/pulls/$PR/requested_reviewers3. Remove
update-custom-runner.yml. It targeted self-hosted macOS runners (fplmac1,fplmac2) that are no longer registered (the repo has zero self-hosted runners), wasworkflow_dispatch-only with no run history, and was never functional: itsif:readsgithub.event.input(singular — not a real context) so the job was always skipped, and its steps onlyechotheir commands.Breaking-change review
Release notes for each major bump were checked against actual usage:
download-artifactv5 path change only affectsartifact-idsdownloads — not used here (all downloads are byname, incl. the cross-runrun-idones).download-artifactv8 now errors on digest mismatch by default (previously a warning).checkoutv6 stores credentials in$RUNNER_TEMPinstead of.git/config; nothing in the repo readsextraheaderfrom git config. v7 refuses fork-PR checkout underpull_request_target, butchecks_secure.ymlchecks out the default (base) ref, so it is unaffected.setup-pythonv7 removedpip-install,setup-javav6 renamedjdkFile,setup-nodev6 limited auto-caching to npm — none used.nick-fields/retryv4 has the same inputs as v2.Validation
uses:resolves to anode24(or composite/docker) action.zizmorfindings dropped from 66 to 13 onmain→ this branch; the remaining 13 are pre-existingref-version-mismatchonlukka/get-cmake@latest(already node24, left as-is).