ci: bump artifact actions to Node 24 (upload-artifact v7, download-artifact v8)#78
Conversation
…tifact v8) GitHub deprecated Node.js 20 actions; the build/merge digest pattern used actions/upload-artifact@v4 and actions/download-artifact@v4 (both Node 20), producing deprecation warnings on every release run. Bump to the latest majors, which default to Node 24: - upload-artifact v4 -> v7 (v6+ runs Node 24) - download-artifact v4 -> v8 (v7+ runs Node 24) The params we use are unchanged across these versions (upload: name/path/ if-no-files-found/retention-days; download: path/pattern/merge-multiple). download v8's digest-mismatch=error default and ESM migration are safe for the empty digest-marker files.
shingonoide
left a comment
There was a problem hiding this comment.
Clean CI maintenance. Bumps actions/upload-artifact@v4 -> @v7 (docker-publish.yml:86) and actions/download-artifact@v4 -> @v8 (line 115), the Node 24 majors. Verified:
- Both target versions are real published majors on Node 24 (
using: node24in each action.yml). - No artifact-name collision across the controller + claimer x amd64/arm64 matrix: uploads use
digests-${{ matrix.image.name }}-${{ matrix.arch.name }}(four distinct names); the merge job downloadspattern: digests-${{ matrix.image }}-*withmerge-multiple: true, so the upload/download contract holds across the v7/v8 pairing. - No other workflow (
lint.yml,test.yml,test-e2e.yml,helm-crd-sync-check.yml) references these actions; pinning stays version-tag style.
Two non-blocking notes:
- The green CI here does not exercise the bump: the upload/export steps and the whole
mergejob are gated ongithub.event_name != 'pull_request', so they were skipped. First real execution is the next push tomainor a tag. download-artifact@v8flips the digest-mismatch default to error (was a warning). A safety improvement, but themergejob will now hard-fail on a mismatched artifact rather than warn. Heads-up for the first run of the new flow.
LGTM.
leandrobmarinho
left a comment
There was a problem hiding this comment.
Verified the artifact-action bump end-to-end against upstream release notes: upload-artifact v7 and download-artifact v8 stay on the same v4-era Artifacts backend (cross-version compatible), merge-multiple/pattern/path are unchanged through v8, and the flat extraction layout the manifest-merge step relies on (printf '...@sha256:%s ' * over /tmp/digests) is preserved -- every breaking change across the bumped majors is either a Node-24 runtime bump or scoped to behaviors this digest-merge flow doesn't use (by-ID downloads, archive:false, hidden files). Names are unique per matrix leg so the v4 immutability/overwrite rules are satisfied. Two non-blocking heads-ups: the node24 runtime requires Actions Runner >= 2.327.1 (matters since these run on Blacksmith runners, not GitHub-hosted), and the Upload/Download digest steps are gated 'if: github.event_name != pull_request' so the merge job is skipped on PRs -- this PR's green checks don't actually exercise the bumped actions, so the first real validation is the next push to main. Looks good.
The artifact-action bump (#78) only covered docker-publish.yml. The other four workflows still ran actions/checkout@v4 and actions/setup-go@v5 (both Node 20), plus golangci-lint-action@v8, producing 'Node.js 20 actions are deprecated' warnings on test/lint/e2e/crd-sync runs. - actions/checkout@v4 -> v6 (test.yml, test-e2e.yml, lint.yml x2, helm-crd-sync-check.yml) - actions/setup-go@v5 -> v6 (same four workflows) - golangci/golangci-lint-action@v8 -> v9 (lint.yml) All three are pure Node-24 runtime bumps (verified action.yml 'using: node24'; golangci v9 release notes confirm the only change is node20->node24, so the version: v2.4.0 pin stays valid). setup-helm@v5 and docker/* are already node24. No Node-20 actions remain in any workflow.
What
Bump the artifact actions in
docker-publish.ymlto Node 24 majors, clearing the "Node.js 20 actions are deprecated" warnings that show on every release run:actions/upload-artifact@v4→@v7actions/download-artifact@v4→@v8Why these versions
GitHub deprecated Node 20 actions. For the artifact actions,
v5(upload) /v6(download) only had preliminary Node 24 support and still defaulted to Node 20 — so the first versions that actually default to Node 24 are uploadv6+ and downloadv7+. I went to the current latest majors.Compatibility
The
with:params we use are unchanged across these versions:name,path,if-no-files-found,retention-dayspath,pattern,merge-multipledownload
v8adds a securedigest-mismatch=errordefault + an ESM migration (transparent to callers) — both safe for the empty digest-marker files this pipeline uploads/downloads. Thelatestrunners (Blacksmith ubuntu-2404 + GitHub-hosted) meet the>= 2.327.1runner requirement.These were the only two actions flagged;
checkout@v6,docker/*, andsetup-helm@v5already run on Node 24.Need help on this PR? Tag
/codesmithwith what you need. Autofix is disabled.