Skip to content

ci: move workflow actions off the deprecated Node 20 runtime - #48

Open
foureight84 wants to merge 1 commit into
mainfrom
ci/bump-actions-node24
Open

ci: move workflow actions off the deprecated Node 20 runtime#48
foureight84 wants to merge 1 commit into
mainfrom
ci/bump-actions-node24

Conversation

@foureight84

Copy link
Copy Markdown
Owner

The v2.5.0+35 release run warned that four actions target Node 20 and are being force-run on Node 24, and that setup-java v4 is EOL. Builds pass today; this closes it out before the forced-migration window does.

Action From To
actions/checkout v4 v7
actions/setup-java v4 v5
gradle/actions/setup-gradle v4 v5 ⚠️ not v6
actions/upload-artifact v4 v7
softprops/action-gh-release v2 v3

Every one of these majors is a Node 20 → 24 runtime bump. I read the release notes for each; none changes an input this repo passes. Specifically:

  • checkout v7 also blocks fork checkouts for pull_request_target and workflow_run — neither workflow uses those events (CI is on pull_request).
  • upload-artifact v7 adds an optional archive input and leaves name / path / if-no-files-found / retention-days untouched.
  • All require runner ≥ 2.327.1; GitHub-hosted ubuntu-latest is well past that.

⚠️ setup-gradle deliberately stops at v5, not the latest v6

gradle/actions@v6 extracts caching into gradle-actions-caching, a proprietary component governed by Gradle's commercial Terms of Use rather than the MIT licence — and per Gradle's own blog post, upgrading to v6 accepts those terms when caching is enabled.

v5 is the last MIT line and already runs on Node 24, so it fully resolves the deprecation without taking on a licensing commitment on behalf of an OSS project. That felt like your call rather than mine, so I took the option that doesn't foreclose it. Both workflows carry a comment explaining why, with the blog link, so this doesn't get "helpfully" bumped later without the context.

Moving to v6 is a one-line change if you'd rather have the newer caching.

Verification

Workflow YAML parses cleanly with the expected structure (ci: 1 job / 6 steps; release: 1 job / 8 steps). The real check is CI on this PR.

Caveat: this PR exercises ci.yml only. release.yml runs on tag pushes, so its changes stay unverified until the next release tag — worth knowing if the next release is time-sensitive. The changes are identical in kind to the ones CI does cover.

The v2.5.0+35 release run warned that checkout@v4, setup-java@v4,
setup-gradle@v4 and action-gh-release@v2 all target Node 20 and were being
force-run on Node 24, and that setup-java v4 is EOL. Builds still pass, but the
forced-migration window closes eventually.

  actions/checkout            v4 -> v7
  actions/setup-java          v4 -> v5
  gradle/actions/setup-gradle v4 -> v5   (not v6 — see below)
  actions/upload-artifact     v4 -> v7
  softprops/action-gh-release v2 -> v3

Every one of these majors is a Node 20 -> 24 runtime bump; none changes an input
this repo passes. checkout v7 also blocks fork checkouts for pull_request_target
and workflow_run, neither of which these workflows use. upload-artifact v7 adds
an optional `archive` input and leaves name/path/if-no-files-found/retention-days
untouched. All require runner >= 2.327.1, which GitHub-hosted ubuntu-latest is
well past.

**setup-gradle deliberately stops at v5, not the latest v6.** v6 extracts caching
into `gradle-actions-caching`, a proprietary component governed by Gradle's
commercial Terms of Use instead of the MIT licence, and using v6 with caching
enabled accepts those terms. v5 is the last MIT line and already runs on Node 24,
so it fully resolves the deprecation without taking on a licensing commitment on
behalf of an OSS project. Both workflows carry a comment saying so, with a link
to Gradle's blog post, so the next person doesn't "helpfully" bump it.

Note this PR exercises ci.yml only — release.yml runs on tag pushes, so its
changes stay unverified until the next release tag.
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