Update GitHub Actions off the deprecated Node.js 20 runtime - #54
Merged
Conversation
Every action in the workflow targeted Node.js 20, which GitHub deprecated; runs were already being force-migrated to Node.js 24 with a warning on every job. - actions/checkout v4 -> v7 - actions/setup-python v5 -> v7 - actions/cache v4 -> v6 - actions/upload-artifact v4 -> v7 - actions/download-artifact v4 -> v8 - codecov/codecov-action v5 -> v7 - softprops/action-gh-release v2 -> v3 - astral-sh/setup-uv v5 -> v10.0.1 setup-uv is pinned to an exact version because it stopped publishing major and minor tags in v8; astral-sh/setup-uv@v10 does not resolve. Every input the workflow passes still exists in the target versions. The breaking change in download-artifact v5 only affects downloads by artifact ID, while the release job downloads all artifacts at once, so the extracted layout is unchanged. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #54 +/- ##
=========================================
Coverage 100.00% 100.00%
=========================================
Files 5 5
Lines 583 583
Branches 97 97
=========================================
Hits 583 583 ☔ View full report in Codecov by Harness. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Every action in the workflow targeted Node.js 20, which GitHub has deprecated. Runs were already being force-migrated to Node.js 24, annotating every job with a deprecation warning.
actions/checkoutactions/setup-pythonactions/cacheactions/upload-artifactactions/download-artifactcodecov/codecov-actionsoftprops/action-gh-releaseastral-sh/setup-uvNotes on the two non-obvious ones
setup-uvis pinned to an exact version on purpose. It stopped publishing major and minor tags in v8, as a supply-chain hardening measure after the tj-actions compromise —astral-sh/setup-uv@v10returns a 404 and would fail the workflow immediately. Hence the exactv10.0.1and the comment above the step. Of the breaking changes across v6–v10, none touch this workflow: the removedpyproject-file/uv-file/server-urlinputs were never used here, and the rest are cache-behaviour defaults.download-artifactv5 carried a breaking change, but it only affects downloading a single artifact by ID. The release job downloads all artifacts at once, so each still lands in a directory named after its artifact and themv snapjaw-*/…steps are unaffected. v8 additionally makes a digest mismatch fail instead of warn, which is the behaviour you want for release assets.Checked that every input the workflow passes still exists in the target versions —
setup-pythonkeptarchitecture,cachekeptpath/key,upload-artifactkeptname/path.What CI here does and does not prove
check,build-windowsandbuild-linuxexercise checkout, setup-uv, setup-python, cache, upload-artifact and codecov on both Windows and Linux.The
releasejob is gated onif: github.event_name == 'push', sodownload-artifact@v8andaction-gh-release@v3are not exercised by this PR and will first run on the merge to master. That is why both are covered by the reasoning above rather than by a green check. If the release job does fail, it fails after the build artifacts are already produced, so nothing is lost beyond a re-run.🤖 Generated with Claude Code