You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
All 8 failures share a single error: Action failed: Unexpected HTTP response: 403 when the SonarSource/sonarqube-scan-action attempts to download sonar-scanner-cli-8.1.0.6389-linux-x64.zip from binaries.sonarsource.com. This is an intermittent CDN 403 from SonarSource's binary distribution, not a code-quality issue. The action has no built-in retry, so every transient network hiccup produces a full workflow failure.
Scope
Replace the single sonarcloud scan step with a 3-attempt retry pattern using the same pinned action SHA. No new action dependencies are introduced.
Implementation Checklist
.github/workflows/sonarcloud.yml β replace the single SonarSource/sonarqube-scan-action step with three sequential retry steps: attempt 1 and 2 set continue-on-error: true; attempt 2 runs only if attempt 1 failed; attempt 3 (no continue-on-error) runs only if attempt 2 failed
Tests to Write
No unit tests apply to pure YAML workflow configuration (TDD exception). Correctness is validated by YAML syntax check (yq) and by the workflow running successfully in CI after merge.
With a 26.7% per-attempt failure rate, the probability that all 3 independent attempts fail is β 0.267Β³ β 1.9%, which is below the 10% fleet-monitor threshold.
Triggered when SonarSource/sonarqube-scan-action downloaded sonar-scanner-cli-8.1.0.6389-linux-x64.zip from binaries.sonarsource.com. The action has no built-in retry, so every transient CDN 403 caused a full workflow failure.
Plan Execution
Identified root cause from run logs: intermittent HTTP 403 on scanner binary download
Replaced single scan step with 3-attempt retry pattern (same pinned SHA, no new dependencies)
Validated YAML syntax with Python yaml.safe_load
Reviewed diff for correctness
Retry Logic
Scenario
Result
Attempt 1 succeeds
Attempts 2 & 3 skipped β job passes
Attempt 1 fails, attempt 2 succeeds
Attempt 3 skipped β job passes
All 3 fail
Job fails (real persistent failure)
SONAR_TOKEN empty
All 3 skipped β job passes
Probability all 3 independent attempts fail: 0.267Β³ β 1.9%, below the 10% fleet-monitor threshold.
Test Results
YAML syntax OK
(TDD exception: pure YAML configuration change β no observable behavioral unit to test before implementing. Validated via YAML parse and manual logic walkthrough.)
Files Changed
.github/workflows/sonarcloud.yml: replaced single SonarCloud Scan step with three sequential retry steps (sonar_1, sonar_2, sonar_3); attempts 1 and 2 use continue-on-error: true; attempt 2 runs only if attempt 1 failed; attempt 3 runs only if attempt 2 failed
Notes
No new external action dependencies introduced β all three steps pin the same SHA (7006c4492b2e0ee0f816d36501671557c97f5995)
Real quality gate failures will still fail the job (all 3 attempts would fail identically)
If SonarSource's CDN stabilises, the retries are no-ops with negligible overhead
Activity
don-petry commentedon Jun 4, 2026
Dev-Lead Implementation Plan
Issue: #287 β [Fleet Monitor] petry-projects/broodly β sonarcloud.yml
Root Cause
All 8 failures share a single error:
Action failed: Unexpected HTTP response: 403when theSonarSource/sonarqube-scan-actionattempts to downloadsonar-scanner-cli-8.1.0.6389-linux-x64.zipfrombinaries.sonarsource.com. This is an intermittent CDN 403 from SonarSource's binary distribution, not a code-quality issue. The action has no built-in retry, so every transient network hiccup produces a full workflow failure.Scope
Replace the single sonarcloud scan step with a 3-attempt retry pattern using the same pinned action SHA. No new action dependencies are introduced.
Implementation Checklist
.github/workflows/sonarcloud.ymlβ replace the singleSonarSource/sonarqube-scan-actionstep with three sequential retry steps: attempt 1 and 2 setcontinue-on-error: true; attempt 2 runs only if attempt 1 failed; attempt 3 (no continue-on-error) runs only if attempt 2 failedTests to Write
yq) and by the workflow running successfully in CI after merge.Test Command
yq eval .github/workflows/sonarcloud.yml(syntax validation)Retry probability analysis
With a 26.7% per-attempt failure rate, the probability that all 3 independent attempts fail is β 0.267Β³ β 1.9%, which is below the 10% fleet-monitor threshold.
don-petry commentedon Jun 4, 2026
Dev-Lead: Implementation Complete
Root Cause
All 8 failures shared a single error:
Triggered when
SonarSource/sonarqube-scan-actiondownloadedsonar-scanner-cli-8.1.0.6389-linux-x64.zipfrombinaries.sonarsource.com. The action has no built-in retry, so every transient CDN 403 caused a full workflow failure.Plan Execution
yaml.safe_loadRetry Logic
SONAR_TOKENemptyProbability all 3 independent attempts fail: 0.267Β³ β 1.9%, below the 10% fleet-monitor threshold.
Test Results
(TDD exception: pure YAML configuration change β no observable behavioral unit to test before implementing. Validated via YAML parse and manual logic walkthrough.)
Files Changed
.github/workflows/sonarcloud.yml: replaced singleSonarCloud Scanstep with three sequential retry steps (sonar_1,sonar_2,sonar_3); attempts 1 and 2 usecontinue-on-error: true; attempt 2 runs only if attempt 1 failed; attempt 3 runs only if attempt 2 failedNotes
7006c4492b2e0ee0f816d36501671557c97f5995)feat: implement issue #287 β [Fleet Monitor] petry-projects/broodly ββ¦
feat: implement issue #287 β [Fleet Monitor] petry-projects/broodly ββ¦
feat: implement issue #287 β [Fleet Monitor] petry-projects/broodly ββ¦
feat: implement issue #287 β [Fleet Monitor] petry-projects/broodly ββ¦
feat: implement issue #287 β [Fleet Monitor] petry-projects/broodly ββ¦
feat: implement issue #407 β Compliance: ruleset-drift-pr-quality-reqβ¦
feat: implement issue #287 β [Fleet Monitor] petry-projects/broodly ββ¦
feat: implement issue #287 β [Fleet Monitor] petry-projects/broodly ββ¦
feat: implement issue #409 β Compliance: ruleset-drift-pr-quality-reqβ¦