[improve][ci] Upgrade GitHub Actions to latest and ASF-approved revisions - #610
Conversation
…ions Two Docker actions were pinned to SHAs that are not on the ASF org-wide allowlist: docker/setup-buildx-action@4d04d5d9 docker/setup-qemu-action@ce360397 A workflow referencing a non-allowlisted action fails with a bare "Startup failure": no logs, no notifications, and the PR can look green because no checks ran. PR #605 hit exactly this — its "PR validation" run never started, so the build and unit tests did not execute while CodeQL and Analyze(cpp) still reported success. Bump both to the latest approved revisions from apache/infrastructure-actions, and record the tag in a trailing comment so Dependabot can track them: docker/setup-buildx-action -> 37fe6310 # v4.3.0 docker/setup-qemu-action -> 96fe6ef7 # v4.2.0 docker/build-push-action 53b7df96 # v7.3.0 (already latest) Also update the GitHub-owned actions, which the ASF allowlist treats as implicitly trusted, to their latest majors: actions/checkout v3, v4 -> v7 actions/cache v3, v4 -> v6 actions/upload-artifact master -> v7 github/codeql-action v3 -> v4 jidicula/clang-format-action v4.11.0 -> v4.18.0 (allowlisted via *) actions/upload-artifact was tracking @master, an unpinned moving target. All four call sites already use unique artifact names, so the v4+ one-artifact-per-name rule is satisfied.
CI status: the allowlist fix works; the one remaining failure is pre-existingThe fix does what it is meant to. The one failure is not from this change. This diff touches only Failed on all 3 retries for both parameters, so it is consistent rather than flaky. Most likely cause: broker drift through an unpinned image. I checked the alternatives and they do not hold up: the only commit touching So the honest reading is that Suggested split, since these are separate concerns:
Happy to take 2 or 3 in a follow-up. |
Correction:
|
Motivation
Two Docker actions in our workflows are pinned to SHAs that are not on the ASF org-wide allowlist:
docker/setup-buildx-action4d04d5d9docker/setup-qemu-actionce360397docker/build-push-action53b7df96When a workflow references an action that is not allowlisted, the run fails with a bare "Startup failure" — per ASF infra: "no logs, no notifications, and the PR may appear green because no checks ran."
That is not hypothetical. #605 hit it: its
PR validationrun never started, so the build and unit tests did not execute on that head, whileCodeQLandAnalyze (cpp)still reported success — the PR looked green with its actual test suite never having run.Modifications
ASF-allowlisted third-party actions — bumped to the latest approved revisions from
apache/infrastructure-actions/actions.yml, with the tag in a trailing comment so Dependabot can track them (the recommended, Zizmor-friendly form):docker/setup-buildx-action→37fe6310# v4.3.0docker/setup-qemu-action→96fe6ef7# v4.2.0docker/build-push-action→ unchanged SHA, comment added# v7.3.0jidicula/clang-format-actionv4.11.0→v4.18.0(allowlisted via a@*wildcard)GitHub-owned actions — the allowlist implicitly trusts
actions/*andgithub/*, so these move to their latest majors:actions/checkoutv3,v4→v7(12 call sites)actions/cachev3,v4→v6(9 call sites)actions/upload-artifactmaster→v7(4 call sites)github/codeql-action/{init,analyze}v3→v4actions/upload-artifactwas tracking@master— an unpinned moving target that could change under us at any time.Verifying this change
The diff touches only
uses:lines; no workflow logic changed. Verified locally:uses:ref now matches an entry inapproved_patterns.yml, applying the same rules asapache/infrastructure-actions/allowlist-checkupload-artifactcall sites already use unique, matrix-derived artifact names, so the v4+ "one upload per artifact name" restriction is satisfiedThe real verification is this PR's own CI: if
PR validationstarts and runs to completion, the allowlist problem is fixed.Follow-up worth considering
Adding the
apache/infrastructure-actions/allowlist-checkjob to CI would catch this class of breakage at PR time instead of letting it surface as a silent startup failure. Left out here to keep this change to version bumps.Does this pull request potentially affect one of the following parts:
Documentation
doc-not-needed