Summary
Dependabot's github-actions manager updates the uses: action reference but not the with: inputs that select a language runtime. So node-version:, go-version:, and python-version: values are invisible to our current dependency automation and can silently go end-of-life.
This is not hypothetical — it is exactly how #3870 happened, and this repo contains the proof.
The evidence
Before #3871, website-prod.yml and website-stage.yml looked like this:
- name: Setup Node.js
uses: actions/setup-node@v7 # <- current major. Dependabot kept this fresh.
with:
node-version: 18.x # <- EOL 2025-04-30. Dependabot never touched it.
Two lines apart. Dependabot had been doing its job on the line above for years while the line below rotted past end-of-life. Every action in the repo is on a current major — actions/checkout@v7, actions/setup-go@v7, actions/setup-node@v7, actions/upload-artifact@v7, actions/download-artifact@v8 — which is what makes this a clean natural experiment rather than a guess: the manager was demonstrably running and demonstrably could not see the runtime version.
#3871 fixed the values (18.x → 24.x). It did nothing about the mechanism, so the same drift will recur on the same schedule.
Why Renovate is the relevant difference
Per Renovate's github-actions manager docs:
Renovate supports updating the with version for actions/setup-go, actions/setup-node, and actions/setup-python, although not all syntaxes are supported out of the box.
Renovate will use npm-style semver versioning for go and python, and Renovate's built-in node versioning for updating node.
Dependabot has no equivalent. As far as I can find there is no Dependabot configuration that closes this — it is a capability gap in the manager, not a setting we have wrong.
Options
- Adopt Renovate for the
github-actions manager (either alongside Dependabot for gomod, or replacing it wholesale). Closes this properly and also covers the Docker gap in the companion issue.
- A CI guard instead — a small scheduled job that reads
nodejs/Release's schedule.json and fails if any node-version: in .github/workflows/ is past its EOL date. Cheaper and no new bot, but bespoke and only covers Node.
- Accept and calendar it. Node 24 is supported until 2028-04-30, so the next forced action is far out — but this is what we chose implicitly last time, and it cost us a year on an unsupported runtime.
I'd suggest (1), since the companion issue needs Renovate's Docker manager anyway and doing both at once is one decision rather than two.
Happy to raise the PR for whichever direction maintainers prefer.
Context
Found while fixing #3870 / #3871 and auditing whether the fix would hold.
Summary
Dependabot's
github-actionsmanager updates theuses:action reference but not thewith:inputs that select a language runtime. Sonode-version:,go-version:, andpython-version:values are invisible to our current dependency automation and can silently go end-of-life.This is not hypothetical — it is exactly how #3870 happened, and this repo contains the proof.
The evidence
Before #3871,
website-prod.ymlandwebsite-stage.ymllooked like this:Two lines apart. Dependabot had been doing its job on the line above for years while the line below rotted past end-of-life. Every action in the repo is on a current major —
actions/checkout@v7,actions/setup-go@v7,actions/setup-node@v7,actions/upload-artifact@v7,actions/download-artifact@v8— which is what makes this a clean natural experiment rather than a guess: the manager was demonstrably running and demonstrably could not see the runtime version.#3871 fixed the values (18.x → 24.x). It did nothing about the mechanism, so the same drift will recur on the same schedule.
Why Renovate is the relevant difference
Per Renovate's
github-actionsmanager docs:Dependabot has no equivalent. As far as I can find there is no Dependabot configuration that closes this — it is a capability gap in the manager, not a setting we have wrong.
Options
github-actionsmanager (either alongside Dependabot for gomod, or replacing it wholesale). Closes this properly and also covers the Docker gap in the companion issue.nodejs/Release'sschedule.jsonand fails if anynode-version:in.github/workflows/is past its EOL date. Cheaper and no new bot, but bespoke and only covers Node.I'd suggest (1), since the companion issue needs Renovate's Docker manager anyway and doing both at once is one decision rather than two.
Happy to raise the PR for whichever direction maintainers prefer.
Context
Found while fixing #3870 / #3871 and auditing whether the fix would hold.