Build E2E binary ahead of release matrix - #4214
Draft
lox wants to merge 2 commits into
Draft
Conversation
Co-authored-by: Lachlan Donald <lachlan@buildkite.com>
Co-authored-by: Lachlan Donald <lachlan@buildkite.com>
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.
Description
Draft comparison for #4213.
Build the release Linux/amd64 artifact in one dedicated step so E2E can start without waiting for the other 21 release targets. Leave the existing release matrix and its downstream fan-in intact rather than splitting it into three dependency cohorts.
The Linux/amd64 target is skipped in the matrix, so this does not duplicate work or artifacts. E2E continues to test the exact artifact later consumed by release assembly.
Comparison goal
Determine whether this simpler graph retains the critical-path improvement measured in #4213:
Both branches persist E2E Go compilation/module caches and use
-count=1, so cached test results cannot affect the comparison.Measured comparison
Draft build 13874 passed in 8.86 minutes, versus 8.28 minutes for #4213's similarly queue-constrained final-code build 13872. This single comparison was 0.58 minutes / 7% slower, but total duration is queue-sensitive.
The simpler graph did start E2E substantially earlier:
The dedicated artifact removed 1.92m of E2E fan-in, but unchanged release consumers all became runnable together after 3.92m and then queued for roughly 2-3.2 minutes. RPM packaging became the final job at 8.85m. The cohort design staged Docker/package work earlier, keeping its non-E2E tail two minutes shorter under comparable contention.
The draft still produced all 22 binaries and all 22 attestations, and every pipeline consumer passed. Its source diff is 36 additions / 4 deletions, compared with #4213's 71 additions / 13 deletions.
Conclusion: this design is materially simpler and gives much earlier E2E feedback, but this run did not preserve #4213's overall wall-clock result under contention.
Changes
build-linux-amd64-binary.bkCLI test depend directly on that artifact.Tradeoffs
Testing
go test ./...). Buildkite employees may check this if the pipeline has run automatically.go tool gofumpt -extra -w .)No Go source changed. Validation performed:
bash -n .buildkite/steps/e2e-tests.shandgit diff --check.Buildkite build 13874 passed and complete artifact/release validation is recorded above.
Disclosures / Credits
Amp implemented and validated this comparison after analyzing the measured graph from #4213. OpenAI's Oracle reviewed the shared cache correctness constraints in #4213.