perf(ci): release-image first so arm64 unblocks during amd64 npm publish#23434
Draft
AztecBot wants to merge 1 commit into
Draft
perf(ci): release-image first so arm64 unblocks during amd64 npm publish#23434AztecBot wants to merge 1 commit into
AztecBot wants to merge 1 commit into
Conversation
amd64's ci-release-publish loop spends ~11 minutes publishing ~30 npm packages serially. arm64 finishes its docker push in ~3 minutes, then sits idle in release-image/bootstrap.sh's 'Waiting for amd64 image to be pushed...' poll until amd64 reaches the same step. Reordering 'release-image' to the front of the projects array lets arm64 stitch the multi-arch manifest while amd64 is still publishing npm/cargo/github artifacts, eliminating the arm64 idle window.
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.
Problem
ci-release-publishtakes ~20 minutes. Breakdown of the amd64 instance for v5.0.0-nightly.20260518 (log):make release(build)arm64 (log) does its
release-imagepush at 03:29:23 (~3m in) and then sits idle for ~11m 39s inrelease-image/bootstrap.sh'sWaiting for amd64 image to be pushed...poll loop, because the multi-arch manifest can only be stitched after amd64's docker push. amd64 doesn't get to its docker push until after the npm loop finishes.Fix
Move
release-imageto the front of theprojectsarray inbootstrap.sh:release. amd64 now docker-pushes its arch tag immediately after the build phase (~03:30 instead of ~03:41). arm64's poll loop terminates at the next 10s tick and the manifest list is created while amd64 is still publishing npm packages.Expected effect:
ci-release-publishwall time roughly unchanged (amd64 still has ~11m of serial npm publishing to do — that's a separate optimization).Risk / why this is safe
The 11 entries in the
projectsarray are all independent at publish time — each calls its own<project>/bootstrap.sh release, writing to npm, cargo, github releases, or dockerhub. No cross-project ordering dependency exists. Concrete checks:aztec-up/bootstrap.sh releaseuploads installer scripts to S3 (no docker dependency at publish time; the docker dependency is at build time andmake releasehas already run).release-image/bootstrap.sh releaseonly needs the locally-builtaztecprotocol/aztec:$COMMIT_HASHimage, whichmake releasehas produced before this loop runs.projects=(release-image)) is unchanged in behavior.If anything in
aztec-updid depend on the docker tag being pushed, the existing order had it running beforerelease-imageanyway, so movingrelease-imageearlier strictly cannot regress that.Test plan
Waiting for amd64...window shrinks to seconds.Created by claudebox · group:
slackbot