iluwatar / iluwatar/java-design-patterns

Migrate GitHub Actions workflows off deprecated Node 20 runtimes

Open
#3,607 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Java
Stars
94.7k
Forks
27.4k
Avg merge
3d 4h
Merged PRs (30d)
10

Description

GitHub Actions workflows reference actions that declare the deprecated Node.js 20 runtime, including a nested dependency in Codecov v5. Update these dependencies to Node 24-compatible releases while preserving the existing Java 21 build, workflow triggers, permissions, and runner images.

GitHub currently schedules Node 20 removal from Actions runners for September 23, 2026: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/

Changes prepared locally

These changes are prepared in a local working tree; they have not been submitted as a pull request or merged.

File Change
.github/workflows/maven-ci.yml Upgrade checkout v4 → v5, setup-java v4 → v5, Sonar cache v4 → v5, and Codecov v5 → v7. Remove the redundant Maven cache step; setup-java already manages Maven caching.
.github/workflows/maven-pr-builder.yml Upgrade checkout v4 → v5, setup-java v4 → v5, and Codecov v5 → v7. Remove the redundant Maven cache step.
.github/workflows/stale.yml Upgrade stale v9 → v10.
.github/dependabot.yml Add weekly github-actions updates alongside the existing weekly Maven updates.

The GitHub-maintained action upgrades use the smallest major-version changes that introduce Node 24. Codecov v7 incorporates the Node 24-compatible github-script dependency introduced in v6 and the updated uploader verification-key source introduced in v7.

Release references:

Remaining dependency: Presubmit

.github/workflows/presubmit.yml uses presubmit/ai-reviewer@latest. Both that reference and the newest published release checked, v0.2.5, still declare runs.using: node20:
https://github.com/presubmit/ai-reviewer/blob/v0.2.5/action.yml

The prepared changes leave this workflow unchanged. An upstream Node 24-compatible release, or a separately tested replacement, is still needed to remove this remaining deprecated runtime declaration. Forcing a runtime override alone would not establish compatibility.

Validation performed

  • actionlint 1.7.12 passed with external ShellCheck and Pyflakes integration disabled. The local ShellCheck shim was unavailable.
  • YAML parsing and Dependabot configuration checks passed.
  • Confirmed that updated action references resolve, their configured inputs are supported, and their declared runtimes—including Codecov's nested github-script action—use Node 24.
  • Confirmed that workflow triggers, permissions, runner images, and shell commands match the original workflows.
  • Confirmed that each Maven workflow retains setup-java's Maven cache.
  • git diff --check passed.

GitHub-hosted workflow execution has not yet been tested. The Node 24 actions require Actions runner v2.327.1 or newer; the workflows use GitHub-hosted Ubuntu runners.

Completion criteria

  • Submit and review the prepared workflow and Dependabot changes.
  • Confirm the Java PR build and coverage upload on GitHub-hosted runners.
  • Confirm the master build, Sonar analysis, coverage upload, and scheduled stale workflow after merge.
  • Resolve Presubmit's remaining Node 20 runtime declaration with a verified compatible release or replacement.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Review .github/workflows/maven-ci.yml, maven-pr-builder.yml, stale.yml, presubmit.yml, and .github/dependabot.yml, then run the stated actionlint and YAML/Dependabot checks. Confirm the Java builds, Sonar analysis, coverage uploads, and stale workflow on GitHub-hosted runners, and resolve Presubmit's Node 20 runtime with a verified compatible release or replacement.

Written by the indexing model from the issue text.

Assessment

Tech stack
github-actions, java
Domain
ci-cd
Issue type
Refactor
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Clearly specified
Newbie friendliness
38/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.