Skip to content

chore(deps): bump actions/checkout to v7, upload-artifact to v7, setup-java to v5 - #43

Merged
fonkamloic merged 3 commits into
mainfrom
chore/actions-bumps
Aug 12, 2026
Merged

chore(deps): bump actions/checkout to v7, upload-artifact to v7, setup-java to v5#43
fonkamloic merged 3 commits into
mainfrom
chore/actions-bumps

Conversation

@fonkamloic

Copy link
Copy Markdown
Contributor

Replicates dependabot #8/#9/#11 as a normally-authored PR: those three are permanently BLOCKED by the branch ruleset — the copilot_code_review rule waits for a Copilot review that never arrives on bot-authored PRs (all their checks are green, zero threads, zero required approvals; mergeStateStatus: BLOCKED).

  • actions/checkout v4 → v7 (7 sites; no inputs anywhere in these workflows)
  • actions/upload-artifact v4 → v7 (3 sites; plain name+path, single artifact — pairs with download-artifact@v8 already landed via chore(deps): bump actions/download-artifact from 4 to 8 #7)
  • actions/setup-java v4 → v5 (3 sites; temurin/17 pinned)

Publish workflows are tag-triggered so CI here doesn't exercise them; residual risk accepted and recoverable by re-tag. The three dependabot PRs will be closed with a pointer here once this merges.

…p-java to v5

Replicates dependabot #8/#9/#11, which the branch ruleset blocks from
merging (bot-authored PRs never receive the Copilot review the
copilot_code_review rule waits for). Same review rationale as noted on
those PRs: every usage pins explicit stable inputs; the
upload/download-artifact pair stays consistent (download@v8 landed via
#7); publish workflows are tag-triggered so the residual risk surfaces
only at the next release and is recoverable by re-tag.
@claude

claude Bot commented Aug 12, 2026

Copy link
Copy Markdown

🔴 Critical

None. This is a scoped, mechanical actions bump. Note that this PR's own CI does exercise most of the new majors: flutter_compile.yaml is PR-triggered, and intellij_plugin.yaml / vscode_extension.yaml are paths-triggered on their own workflow files (which this PR edits). So checkout@v7, setup-java@v5, setup-node@v7, and upload-artifact@v7 all resolve on this PR or it goes red — good.

🟠 Medium

  • upload-artifact@v7 vs download-artifact@v8 version skew, unexercised by CI (.github/workflows/intellij_plugin.yaml:45 upload vs :109 download). The build job now uploads intellij-plugin with upload-artifact@v7, while the publish job downloads it with download-artifact@v8 (unchanged from chore(deps): bump actions/download-artifact from 4 to 8 #7). These are a paired upload/download, but the majors differ (7 and 8), and the pair only runs together on an intellij-v* tag push — never in PR CI. The artifact upload/download backends have historically required compatible majors (the v3-to-v4 break made them non-interoperable), so a wire mismatch here would surface only at release time. Worse, the failure would be silent: softprops/action-gh-release@v2 at :114 has no fail_on_unmatched_files, so if dist/*.zip comes up empty the release still publishes, just with no plugin attached. Recommend bumping upload to v8 to match download (the PR body itself frames v7 as "pairs with download-artifact@v8", which argues for matching majors), or explicitly confirming v7/v8 compatibility before the next intellij-v* tag.

🟡 Low

  • Inconsistent checkout pin.github/workflows/claude-review.yml:17 still uses actions/checkout@v4 while every other workflow moves to v7. Out of this PR's stated scope, but worth a follow-up so the repo does not drift.

🟢 Positives

  • Tightly scoped and well-reasoned: the PR body explains the dependabot-BLOCKED motivation, enumerates every changed site, and honestly flags the residual risk (tag-triggered publish jobs not exercised here) as accepted and re-tag-recoverable.
  • All bumps are plain, low-surface usages — checkout with no inputs, upload-artifact with only name+path, setup-java still pinned to temurin/17 — so the blast radius of each major is minimal.
  • Diff is symmetric and complete: all 7 checkout, 3 upload-artifact, and 3 setup-java sites moved together, with no stray leftovers in the bumped files.

upload-artifact goes v8 (not v7) so the tag-only upload/download pair
shares a major, and the GitHub release step now fails when dist/*.zip
matches nothing instead of silently publishing a release without the
plugin.
@fonkamloic

Copy link
Copy Markdown
Contributor Author

Medium taken, both halves: upload-artifact bumped to v8 so the tag-only pair shares a major with download-artifact@v8, and the release step now sets fail_on_unmatched_files: true so an empty dist/ fails the release instead of silently publishing without the plugin. Re-review runs on this push.

@claude

claude Bot commented Aug 12, 2026

Copy link
Copy Markdown

🔴 Critical

  • actions/upload-artifact@v8 does not resolve — this PR's CI is currently red on every workflow it touches. The latest run on this head fails three jobs, all within a few seconds of starting, while the Dart build passes:

    • IntelliJ Plugin / build — FAILURE (15:10:35 → 15:10:39, ~4s)
    • IntelliJ Plugin / verify — FAILURE (15:10:41 → 15:10:44, ~3s)
    • VS Code Extension / build — FAILURE (15:10:41 → 15:10:43, ~2s)
    • flutter_compile / build (ubuntu/windows)SUCCESS (a real ~2min build)

    Isolating the cause: checkout@v7 is shared with the passing Dart build, so it resolves fine and is ruled out. setup-java@v5 is only in the IntelliJ jobs and setup-node@v7 only in the VS Code job, so neither is common to all three failures. The only changed action present in all three failing jobs and absent from the passing one is actions/upload-artifact@v8 (intellij_plugin.yaml:45, :75; vscode_extension.yaml:52). The VS Code build job clinches it: its only two changed actions are checkout@v7 (proven good) and upload-artifact@v8 — yet it dies in ~2s, before npm ci could ever run. GitHub downloads all of a job's actions during "Set up job" before any step executes, so a non-existent tag fails the whole job in seconds — exactly the observed pattern.

    upload-artifact and download-artifact are separate repos with independent release tags; bumping upload v4 → v8 to "match" download-artifact@v8's major assumes a v8 tag exists on actions/upload-artifact, and the CI failures indicate it does not. This blocks merge. Please open the "Set up job" step of one failed run to confirm the exact line (expect Unable to resolve action actions/upload-artifact@v8, unable to find version v8), then pin upload-artifact to the highest tag that actually exists on actions/upload-artifact.

    (I could not read the raw job logs directly from this review environment — gh run/gh api were permission-gated — so the specific action is inferred from the job/step correlation above rather than quoted from the log. The merge-blocking fact, that CI is red on all three modified workflows, is directly from statusCheckRollup and is not in doubt.)

🟠 Medium

  • download-artifact@v8 (intellij_plugin.yaml:109) is under the same doubt and is never exercised by CI. The publish job is gated on refs/tags/intellij-v*, so this download only runs at release time. If actions/upload-artifact has no v8 tag, verify actions/download-artifact actually does before the next intellij-v* tag — otherwise the release will fail at "Set up job" the same way, discovered only during a release. Confirm both tags exist against their respective repos, not by analogy to each other.

🟡 Low

  • fail_on_unmatched_files asymmetry. intellij_plugin.yaml:121 correctly guards the release, but the VS Code release (vscode_extension.yaml:99-103) has no such guard. Lower risk there since the .vsix is packaged in-job immediately before (a packaging failure fails the job first), but adding it would make the two release paths consistent and equally fail-safe.
  • Checkout pin drift. claude-review.yml:17 still uses actions/checkout@v4 while every other workflow is on v7. Out of this PR's stated scope (also noted in the prior review), but worth a follow-up so the repo doesn't drift.

🟢 Positives

  • The prior-round Medium was handled cleanly on both halves: upload-artifact moved to match download-artifact's major, and fail_on_unmatched_files: true (intellij_plugin.yaml:121) now prevents a silent empty-dist/ release — with a clear inline comment explaining why PR CI can't catch that path.
  • Well-scoped and honestly documented: the PR body enumerates every changed site, explains the dependabot-BLOCKED motivation, and flags the tag-triggered publish jobs as unexercised residual risk.
  • Low blast radius per bump — checkout with no inputs, upload-artifact with only name+path, setup-java still pinned to temurin/17 — so once the artifact-action tag is corrected the change is mechanical and safe.

The upload/download majors are simply offset (upload latest is v7,
download latest is v8, both on the shared v4+ artifact backend), which
is exactly the pairing dependabot proposed. fail_on_unmatched_files
stays: an empty dist/ must fail the release.
@fonkamloic

Copy link
Copy Markdown
Contributor Author

Round 2 Critical taken: upload-artifact@v8 does not exist — reverted to v7, which is that action's latest. Answering round 1's pair-skew Medium properly this time: the majors are offset between the two actions by design (upload latest = v7, download latest = v8; both are the shared v4+ artifact backend, which is mutually compatible — the v3→v4 break was the backend switch). fail_on_unmatched_files: true stays, so even a hypothetical wire mismatch now fails the release loudly instead of publishing without the plugin. Re-review runs on this push.

@claude

claude Bot commented Aug 12, 2026

Copy link
Copy Markdown

🔴 Critical

None. Round 2's merge-blocker (upload-artifact@v8 not resolving) is fixed — this push pins upload-artifact back to v7, and CI on this head now confirms every changed tag resolves:

  • VS Code Extension / build — SUCCESS. This job pulls checkout@v7, setup-node@v7, and upload-artifact@v7 during "Set up job"; a real build means all three resolve.
  • IntelliJ Plugin / build — SUCCESS. This is the exact job that instant-failed in ~4s at setup in round 2. It now completes a full ./gradlew buildPlugin, which proves checkout@v7, setup-java@v5, and upload-artifact@v7 all resolve and the build passes. verify is running the plugin verifier (past setup, in progress).
  • flutter_compile Dart build matrix is green/running as before.

🟠 Medium

None new. The one residual is the already-tabled item: download-artifact@v8 (intellij_plugin.yaml:109) is never exercised by CI — the publish job is gated on refs/tags/intellij-v*. I could not independently verify the actions/download-artifact v8 tag from this environment (gh api and WebFetch to external repos are permission-gated here, the same limitation the prior rounds hit), so I'm not re-raising the upload/download major-skew as a blocker. The author's rationale — both actions are on the shared v4+ artifact backend (the v3→v4 backend switch was the real break), so mismatched majors interoperate — is the accepted understanding, and fail_on_unmatched_files: true (intellij_plugin.yaml:121) now makes any hypothetical wire mismatch fail the release loudly instead of publishing an empty one. Worth a one-time confirmation that the v8 tag exists on actions/download-artifact before the next intellij-v* tag, purely because that path can't be caught by PR CI.

🟡 Low

  • Checkout pin driftclaude-review.yml:17 still uses actions/checkout@v4 while every other workflow is now on v7. Out of this PR's stated scope (noted in both prior rounds); a follow-up would stop the repo drifting.
  • fail_on_unmatched_files asymmetryintellij_plugin.yaml:121 guards the IntelliJ release but vscode_extension.yaml:99-103 has no equivalent guard. Genuinely lower risk there: the .vsix is packaged in-job at :78 immediately before the release, so a packaging failure fails the job first. Adding it would just make the two release paths symmetric.

🟢 Positives

  • Round 2's critical was handled correctly and honestly: reverted to upload-artifact@v7 (the latest that exists) rather than papering over it, and the reply squarely addresses the pair-skew question instead of deflecting.
  • CI now demonstrably exercises the risky majors — checkout@v7, setup-java@v5, setup-node@v7, and upload-artifact@v7 all resolve on this PR or it goes red, so the only unverified tag is the tag-gated download-artifact@v8.
  • fail_on_unmatched_files: true with an inline comment explaining why PR CI can't catch the empty-dist/ case is exactly the right defensive move for a release path that never runs in CI.
  • Tight, symmetric, low-blast-radius diff: all changed sites moved together, usages are input-minimal (checkout bare, upload-artifact with only name+path, setup-java still temurin/17), and the PR body enumerates every site and flags the accepted residual risk.

@fonkamloic
fonkamloic merged commit 1f0893b into main Aug 12, 2026
11 checks passed
@fonkamloic
fonkamloic deleted the chore/actions-bumps branch August 12, 2026 15:41
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