Skip to content

ci: move checkout and setup-python off Node 20 before the fallback goes - #121

Merged
LukasWodka merged 2 commits into
developfrom
ci/node24-action-pins
Aug 15, 2026
Merged

ci: move checkout and setup-python off Node 20 before the fallback goes#121
LukasWodka merged 2 commits into
developfrom
ci/node24-action-pins

Conversation

@LukasWodka

@LukasWodka LukasWodka commented Aug 14, 2026

Copy link
Copy Markdown
Contributor

Part of the fleet-wide sweep tracked in tracebloc/backend#2004. Sibling of tracebloc/backend#2005, which is green.

Why

Every job in this repo emits:

Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24.

The forced run is a temporary GitHub fallback. When it is withdrawn, every job using these two actions fails. Same defect class as tracebloc/backend#1816, which moved add-to-project off using: node20.

Measured, from each tag's own action.yml

Read runs.using at the tag rather than trusting release prose:

action tag using:
checkout v4.x (was pinned here) node20
checkout v5.1.0 / v6.1.0 / v7.0.1 node24
setup-python v5.x (was pinned here) node20
setup-python v6.0.0 / v6.3.0 / v7.0.0 node24

checkout needs v5+, setup-python needs v6+. Note v4.4.0 was published 2026-07-20 alongside v5.1.0/v6.1.0/v7.0.1 — the v4 line is still maintained but stays on node20, so waiting does not fix this.

Why latest rather than the minimal v5/v6 hop

  • cli already ran exactly these two SHAs before this sweep, so latest is proven in the org, and the fleet converges on one pin per action instead of gaining a third variant.
  • One bump instead of two.
  • Neither v7 breaking change applies — checked per repo, not assumed:
    • setup-python v7 drops the pip-install input → unused anywhere in the org.
    • checkout v7 blocks fork-PR checkout under pull_request_target/workflow_run → every workflow's resolved triggers were parsed as YAML, not grepped, so a comment naming a trigger cannot be mistaken for using one. No workflow in this repo pairs those triggers with a checkout.

This also normalises the pin comments: some lines carried a bare # v4, which is a mutable major alias in comment form rather than the full-semver convention.

Verification

  • git diff -U0 inspected: only uses: lines changed, in either direction
  • Every workflow in the repo still parses as YAML
  • Anchor asserted: no occurrence of any old SHA survives under .github/workflows/
  • CI on this PR is the real proof for the two actions in scope: checkout and setup-python no longer appear in the run's Node 20 deprecation annotation, with no other behavioural change.
  • The annotation itself does not disappear, and should not be read as the pass/fail signal. This repo still pins 1 other action(s) whose action.yml declares using: node20 (actions/stale ×1) — out of scope here, measured the same way (read runs.using at the pinned SHA).
  • In caller repos the quality / * jobs come from code-quality.yml@main, so their annotation also keeps naming the old checkout pin until .github promotes develop → main. That is a sequencing artefact of the reusable, not a defect in this PR.

Ordering

No sequencing constraint. caller-drift.py byte-compares only the entries marked copies: in repo-inventory.yml, and there are none fleet-wide — so these PRs may merge in any order, including .github.


Note

Low Risk
Workflow pin and comment-only changes on GitHub-hosted runners; no app code or secrets handling logic changed beyond action versions.

Overview
Part of the org-wide move off Node 20 GitHub Actions before GitHub withdraws the forced Node 24 fallback.

actions/checkout is pinned from v4.4.0 → v7.0.1 (full SHA) in preview-page-coverage.yml, sdk-extras-check.yml, and sync-docs.yml so those jobs use an action built for Node 24.

In sync-docs.yml, peter-evans/create-pull-request goes v6.1.0 → v8.1.1 in the same change set: newer checkout stores credentials under $RUNNER_TEMP, which breaks older create-pull-request (duplicate Authorization), and v8 is the first create-pull-request release on Node 24. Inline comments document why both bumps must land together.

Reviewed by Cursor Bugbot for commit cc5ab92. Bugbot is set up for automated code reviews on this repo. Configure here.

Every job in this repo emits "Node.js 20 is deprecated ... being forced to run
on Node.js 24". That forced run is a TEMPORARY GitHub fallback; when it is
withdrawn, every job using these actions fails.

MEASURED from each tag's own action.yml, not from release prose:

  checkout      v4.x  node20    v5.1.0 / v6.1.0 / v7.0.1  node24
  setup-python  v5.x  node20    v6.0.0 / v6.3.0 / v7.0.0  node24

checkout needs v5+, setup-python v6+. v4.4.0 was published the same day as
v5.1.0/v6.1.0/v7.0.1 - the v4 line is maintained but stays on node20, so
waiting does not fix it.

WHY LATEST, NOT THE MINIMAL v5/v6 HOP: cli already ran exactly these two SHAs
before this sweep, so latest is proven in the org, and the fleet converges on
ONE pin per action instead of gaining a third variant. Neither v7 breaking
change applies - verified per repo, not assumed:

  * setup-python v7 drops the `pip-install` input - unused anywhere in the org.
  * checkout v7 blocks fork-PR checkout under pull_request_target/workflow_run
    - every workflow's resolved triggers were parsed as YAML (not grepped, so a
    comment naming a trigger cannot be mistaken for using one). No workflow in
    this repo pairs those triggers with a checkout.

This also normalises the pin comments: some lines carried a bare `# v4`, which
is a mutable major alias in comment form and not the full-semver convention.

Scope here: 3 checkout + 0 setup-python lines across 3 file(s). Verified
with `git diff -U0` that no other line changed, and all workflows still parse.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@LukasWodka LukasWodka self-assigned this Aug 14, 2026
@LukasWodka
LukasWodka requested a review from saadqbal August 14, 2026 15:44
Comment thread .github/workflows/sync-docs.yml
… sync

Bugbot, High, and correct — this commit bumped `actions/checkout` to v7.0.1 in
`sync-docs.yml` while leaving `peter-evans/create-pull-request` at v6.1.0 in the
same file. Confirmed upstream rather than reasoned about: v7.0.9's release notes
say "Fixes an incompatibility with the recently released `actions/checkout@v6`"
(issue #4228, PR #4230). checkout v6+ writes credentials under `$RUNNER_TEMP`,
and create-pull-request below v7.0.9 then sends a duplicate `Authorization`
header and fails the "Open or update PR" step.

That failure mode is the bad kind: a sync that never opens a PR files no
complaint, so docs would simply have stopped tracking upstream, green.

**v8, not v7.0.11**, and the distinction is this commit's whole point: v6.1.0 and
v7.0.11 are BOTH `using: node20`, so the minimal compatibility bump would have
fixed the clash and left behind exactly the runtime this change exists to remove.
v8.0.0 is the first `node24` release. Its only breaking change is requiring
Actions Runner v2.327.1+ on SELF-HOSTED runners; every job in this repo is
GitHub-hosted, so it does not apply.

The pin was verified, not copied: tags `v8.1.1` and `v8` both point at
5f6978faf089d4d20b00c7766989d076bb2fc7f1, and `action.yml` at that exact SHA
reads `using: 'node24'`.

Swept the other twelve PRs in this migration for the same shape — a file whose
checkout was bumped that also pins create-pull-request, which the diff alone does
not reveal because the cpr line is unchanged. `sync-docs.yml` is the only one.

actionlint clean; YAML parses.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@LukasWodka

Copy link
Copy Markdown
Contributor Author

bugbot run

@cursor cursor Bot 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.

✅ Bugbot reviewed your changes and found no new issues!

Comment @cursor review or bugbot run to trigger another review on this PR

Reviewed by Cursor Bugbot for commit cc5ab92. Configure here.

@LukasWodka
LukasWodka merged commit 947bd2a into develop Aug 15, 2026
9 checks passed
@LukasWodka
LukasWodka deleted the ci/node24-action-pins branch August 15, 2026 05:01
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.

1 participant