Skip to content

ci: raise build stage budget 16->24 and retry flaky artifact downloads#3

Merged
MichaelTaylor3d merged 1 commit into
masterfrom
ci/raise-build-stage-budget-48
Jul 10, 2026
Merged

ci: raise build stage budget 16->24 and retry flaky artifact downloads#3
MichaelTaylor3d merged 1 commit into
masterfrom
ci/raise-build-stage-budget-48

Conversation

@MichaelTaylor3d

Copy link
Copy Markdown

Summary

  • The tag-driven Chromium build (reusable-build.yml) has never completed: it chains sequential "Run Stage" jobs, each ninja-timeboxed to 3.5h, capped at 16 stages, then hard-fails with Build did not finish after 16 stages. The last x64 tag attempt ran ~39.5 wall-hours across all 16 stages and still hit the cap; arm (~63h) and x86 (~43h) blew past it further. Raised the cap to 24 stages — same per-stage ninja timeout, same staged build/src checkpoint carry-over (already resumes ninja correctly between stages, verified in .github/actions/stage/index.js) — just more of them.
  • Root-caused a SEPARATE failure in that same x64 run: stage 10 died outright (before running any ninja) because downloading the ~14.4GB inter-stage checkpoint artifact failed ("Artifact download failed after 5 retries", confirmed via gh run view --log-failed on run 28727618024). The upload path in index.js already retries 5x with backoff; the download path had none, so a single flaky multi-GB transfer discarded ~35 build-hours of completed ninja work and failed the whole tag build regardless of the stage cap. Added an outer retry (3 attempts, 60s backoff) around the download, mirroring the existing upload retry loop.

Verified

  • Confirmed root cause against real failed runs: build-x64 run 28727618024 (16/16 stages, cap-exhausted at build-16, but ALSO an unretried download failure at build-10), build-arm run 28727617984 (16/16 stages all succeeded individually, complete failed purely on the stage cap — the clean stage-cap-exhaustion case), build-x86 run 28727617973 (same cap pattern).
  • Regenerated reusable-build.yml programmatically (24 near-identical stage blocks) and validated the result parses as well-formed YAML with the correct needs chain (python3 -c "import yaml; ..." — confirmed 25 jobs, build-24 needs build-23, complete needs build-24).
  • node --check .github/actions/stage/index.js passes.
  • No package.json/Cargo.toml at repo root, so the version-increment gate is a no-op (matches prior PRs in this repo).

Bump rationale

dig-browser is grandfathered (no commitlint/version-gate imposed) — CI-config-only change, no product version bump.

Closes DIG-Network/dig_ecosystem#48

A clean ungoogled-chromium-based build needs more than 16 sequential
"Run Stage" checkpoints to finish ninja: the last x64 tag build ran
~39.5 wall-hours across all 16 stages and still hit the hard-coded cap
("Build did not finish after 16 stages."); arm (~63h) and x86 (~43h)
blew past it too. Raise the cap to 24 stages (each stage's own ninja
timeout + the staged build/src checkpoint carry-over are unchanged),
giving enough resumable budget for a clean build to actually complete.

Separately, the same x64 run's stage-10 job died outright (not from
the stage cap) when downloading the ~14GB inter-stage checkpoint
artifact: "Artifact download failed after 5 retries." The upload path
already retries 5x with backoff; the download path had no retry at
all, so one flaky multi-GB transfer discarded ~35 build-hours of
already-completed ninja work and failed the whole tag build. Wrap the
download in an outer retry (3 attempts, 60s backoff) mirroring the
existing upload retry loop.
@MichaelTaylor3d MichaelTaylor3d merged commit f2e9472 into master Jul 10, 2026
5 checks passed
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