Skip to content

ci: update deprecated GitHub Actions and fix nightly build detection - #7770

Merged
Vest merged 2 commits into
PCGen:masterfrom
Vest:ci/update-deprecated-actions
Oct 28, 2026
Merged

Vest merged 2 commits into
PCGen:masterfrom
Vest:ci/update-deprecated-actions

Conversation

@Vest

@Vest Vest commented Oct 28, 2026

Copy link
Copy Markdown
Contributor

Why

Every workflow run currently carries "Node.js 20 is deprecated … being forced to run on Node.js 24" annotations. Node 20 was removed from GitHub-hosted runners on 2026-09-23, so the affected actions are living on a temporary shim (changelog).

Separately, the nightly build "produces nothing": its change-detector used git rev-list --since='24 hours ago', measured from the run's actual fire time. Scheduled runs fire late or get dropped (no run fired on 2026-10-28), so that window silently skipped days and lost commits — all five 2026-10-27 commits were never built.

What

1. Bump Node-20 actions to current majors (across all 5 workflows):

Action From To
actions/checkout v4 v5
actions/setup-java v4 v6
actions/cache v4 v6
actions/upload-artifact v4 v7
gradle/actions/setup-gradle v4 v6
softprops/action-gh-release v2 v3
madrapps/jacoco-report v1.7.2 v1.8.0

EnricoMi/publish-unit-test-result-action (Docker) and github/codeql-action were not Node-20-flagged and are left unchanged. Usage was checked against each major's breaking changes (upload-artifact v7 direct-upload is opt-in; setup-gradle/action-gh-release inputs used are all stable).

2. Track github-actions in Dependabot — these rotted because dependabot.yml only covered the gradle ecosystem. A github-actions entry keeps them current automatically.

3. Fix nightly change-detection — compare HEAD against the commit of the most recent v*-NIGHTLY.* tag instead of a wall-clock window. Immune to schedule drift/dropped runs; the date-based tag-exists guard is kept as a same-day safety net.

Verification

  • actionlint (incl. shellcheck on the nightly script) passes with zero findings.
  • Local dry-run of the new check_changes logic against master correctly decides BUILD (HEAD ≠ last nightly tag commit) and SKIP when they match.
  • gradle-test.yml on this PR exercises the bumped checkout/setup-java/setup-gradle/upload-artifact/jacoco-report actions; Node-20 annotations should be gone.

…y detection

The Node 20 runtime was removed from GitHub-hosted runners on 2026-09-23,
leaving every workflow run on a temporary force-to-Node-24 shim with
deprecation annotations. Bump the affected actions to their current majors:

  checkout v4->v5, setup-java v4->v6, cache v4->v6, upload-artifact v4->v7,
  setup-gradle v4->v6, action-gh-release v2->v3, jacoco-report v1.7.2->v1.8.0

EnricoMi/publish-unit-test-result-action (Docker) and github/codeql-action
were not Node-20-flagged and are left as-is.

These rotted because .github/dependabot.yml only tracked the gradle
ecosystem; add a github-actions entry so they stay current automatically.

Separately, the nightly build "produced nothing" because its change
detector used `git rev-list --since='24 hours ago'`, coupled to the run's
wall-clock fire time. Scheduled runs fire late or get dropped, so that
window silently skipped days and lost commits. Compare HEAD against the
commit of the most recent v*-NIGHTLY.* tag instead, which is immune to
schedule drift; keep the date-based tag-exists guard as a same-day safety net.
@Vest Vest self-assigned this Oct 28, 2026
@Vest Vest added bug dependencies Pull requests that update a dependency file labels Oct 28, 2026
Record nightly success with a force-updated `nightly-last-success` tag
pushed only after all four platforms finish uploading, and gate the next
run on that marker instead of the dated v*-NIGHTLY.* tag. The dated tag is
created before the build, so a nightly that failed mid-build was wrongly
treated as "already built" and never retried; the success marker keeps
failed builds retryable across delayed or dropped scheduled runs.

Same-commit reruns reuse the existing dated tag (upload-artifact overwrite
lets artifacts replace cleanly); a dated tag pointing at a different commit
is never overwritten, so same-day changes defer to the next nightly. The
marker name does not match the tag-release workflow's v*.*.* trigger.

Also bump github/codeql-action v3 -> v4 and update AGENTS.md to describe
the marker-based detection.
@Vest
Vest merged commit 0fae5a9 into PCGen:master Oct 28, 2026
3 checks passed
@Vest
Vest deleted the ci/update-deprecated-actions branch October 28, 2026 07:50
@github-actions

Copy link
Copy Markdown
Contributor

🚧 PCGen Code Coverage

Overall Project 27.02% ❌

There is no coverage information present for the Files changed

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug dependencies Pull requests that update a dependency file

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant