Reduce release latency with concurrent gates and shared Go caches - #210
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Outcome
Release checks and distribution builds now run concurrently against the same source commit. Publication waits for both successful jobs. The complete
make checkgate and distribution verification remain unchanged.Both jobs use the same Go module/compiler-cache directories and dependency/platform/source keys. Restored entries only seed Go's content-addressed work; every check still executes. This avoids restoring an unused cache and recompiling unchanged inputs in separate directories.
Scope and cost
Depends on #208, including its combined Runtime image correction and public latest/version bootstrap. No business behavior, tests, supported platforms, installation semantics or publication recovery behavior changes. Concurrent builds can consume runner time when checks later fail; successful-run runner costs and cache behavior are recorded below.
Validation
make check, complete distribution build/verification and actual draft Release uploads.Each job queued for 2 seconds; dependency waiting is not counted as queue time. The first optimized run reduced wall time by 5m17s (14.2%) despite cold caches, while consuming more runner time (19.6%). This is not a warm-to-warm cache comparison: the baseline restored its existing Go cache, while the new cache namespace was empty. The first concurrent build saved a partial compiler/module seed of about 365 MB before the check job could save its larger cache; this affects performance only. The warmed run restored the complete 797 MB default-branch cache in both jobs. Against the successful warm baseline, wall time fell 10m04s (27.0%), while runner consumption rose 1.78 minutes (4.8%). Cache restoration took 21–22 seconds per optimized job. These are individual GitHub-hosted runs, not controlled repeated samples; check duration and disk cleanup vary. The two revisions differ only in workflows, contributor/maintainer rules and unrelated README/banner/docs metadata; application and test sources are unchanged.
The maintainer requested delivery priority. PR #208 and this PR are merged, and authorized tag
v0.0.1points to0f6191de261bb80d9dd0566ba6c86f9e9ac12de5. Its formal push workflow passed the complete checks/build and published v0.0.1. From workflow creation to publication took 32m14s (32m18s through final job cleanup), with new-cache misses. Performance comparisons do not gate delivery. The redundant PR-only check was canceled after merge; the complete candidate and formal tag gates passed.The published Release has 13 uploaded assets, matching checksums and source-identical bootstrap; authenticated latest and explicit-version APIs resolve the same Release and source tag. The final-source offline artifact was downloaded through the remote network tunnel, its archive and contained package checksums verified, then installed on Linux amd64 as an ordinary user in a new isolated directory with
--sandbox none. Core and Web/healthzboth returned 200, and installation state matched the formal source commit. No existing environment or data was removed. Warm-cache full candidate measurement 36530077631 passed checks, build and actual draft publication using the frozen formal workflow/source. Its 13 assets and three checksum records passed the same receipt validation; the formal latest release remains v0.0.1. The validation branch prevents later main changes from affecting the comparison. GitHub currently marks the repository internal, so anonymous API access returns 404; no authentication logic was added to the public installer, and repository visibility was not changed.Need help on this PR? Tag
@codesmithwith what you need. Autofix is disabled.