Skip to content

chore(ci): retry the gitleaks release download on transient 5xx - #245

Merged
mahmutkaya merged 1 commit into
developfrom
chore/177-gitleaks-retry
Sep 6, 2026
Merged

mahmutkaya merged 1 commit into
developfrom
chore/177-gitleaks-retry

Conversation

@mahmutkaya

Copy link
Copy Markdown
Contributor

Closes #177.

What

The gitleaks install curl in .github/workflows/ci.yml gains --retry 3 --retry-delay 2 --retry-all-errors. The last flag is the point: under -sSf, a clean HTTP 504 exits 22 and plain --retry does not retry it — --retry-all-errors is what covers the transient 5xx that failed this REQUIRED check in 3s on a PR whose diff could not contain a secret (run 32473558686).

Audit

Within ci.yml, gitleaks was the only release-tarball download — the sibling installs (Trivy/semgrep/OSV/TruffleHog actions) curl nothing. Found out of this PR's scope: security-audit.yml carries the byte-identical install step with the same gap — filed as a follow-up issue.

How tested

actionlint clean on the workflow; the parsed run block passes bash -n.

Manual review record (review-gate outage)

The push-time review gate is DOWN org-wide since 2026-09-05T23:29Z: its reviewer shell-out (claude -p) is refused with "Your organization has disabled Claude subscription access for Claude Code" (exit 1, cost 0), reproduced independently by two agents with trivial prompts on sonnet and haiku; no ANTHROPIC_API_KEY fallback is configured. This PR was therefore not reviewed by the automated reviewer: the pushes were made with RUMI_REVIEW_FAIL_OPEN=1, and the gate wrote no verdict entries for them.

Per the workspace discipline ("if a PR was not pushed from a gated clone, review it manually before merging"), a manual review was performed instead by the coordinating agent before this PR was opened: full diff read against origin/develop, issue prescription cross-checked, repo conventions checked, and the test oracle re-run independently (not taken from the implementing agent's word alone). CI, the Sonar PR quality gate, review-thread and merge-gate checks (scripts/pr-merge-gate.sh) remain fully enforced and are unaffected by the outage.

If you would rather this wait for the reviewer to come back: hold the merge; the branch is complete and gated checks will run regardless.

A single curl made a REQUIRED check fail in 3s when GitHub's release CDN
returned a 504 (run 32473558686, release PR #176) — on a diff that could not
possibly contain a secret — and the only recovery was a human re-run.

Adds --retry 3 --retry-delay 2 --retry-all-errors to the install step's curl,
per the issue. --retry-all-errors is the load-bearing flag: under -f a clean
HTTP 504 response exits 22 without being retried by plain --retry.

Audit of the sibling pinned-binary installs in this workflow: Trivy
(aquasecurity/trivy-action), semgrep (container image), OSV-Scanner
(google/osv-scanner-action) and TruffleHog (pinned action) download nothing
with curl — the gitleaks step was the only release-tarball download in ci.yml.
Same gap exists in security-audit.yml's identical gitleaks install step
(out of this PR's stated scope; flagged for a follow-up).

Validated: actionlint clean on the workflow; run block bash -n clean.
@sonarqubecloud

sonarqubecloud Bot commented Sep 6, 2026

Copy link
Copy Markdown

@mahmutkaya
mahmutkaya merged commit 42d14db into develop Sep 6, 2026
18 checks passed
@mahmutkaya
mahmutkaya deleted the chore/177-gitleaks-retry branch September 6, 2026 01:23
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.

gitleaks install step has no curl retry: a transient 504 fails a required check

1 participant