Repository navigation
ci: speed up release builds - #426
Merged
Merged
Conversation
The source-built Once that CI uses to drive graph builds only orchestrates rustc and other tools. A dedicated bootstrap profile skips release LTO, single-unit codegen, and optimization of the workspace crates, while dependencies such as the Starlark interpreter stay at opt-level 3. Amp-Thread-ID: https://ampcode.com/threads/T-01a1bfcc-5807-76c0-92bc-c557bc3b66a7 Co-authored-by: Marek Fort <marek@tuist.dev>
The Linux and macOS release builds already read and write the Tuist cache; the Windows one still rebuilt every dependency from a cold local cache. Amp-Thread-ID: https://ampcode.com/threads/T-01a1bfcc-5807-76c0-92bc-c557bc3b66a7 Co-authored-by: Marek Fort <marek@tuist.dev>
…ross releases The XCFramework job built five static libraries one after another and gated every release. The macOS slices now come from the darwin build jobs, which already compiled their dependencies, and each iOS slice builds in its own job before a short job assembles, signs, and notarizes the framework. Release macOS jobs run on Tuist runners with cache volumes for the Cargo bootstrap and prepared dependencies, and every release build uses the Tuist remote cache when sign-in and a probe lookup succeed, falling back to the local cache otherwise. Amp-Thread-ID: https://ampcode.com/threads/T-01a1bfcc-5807-76c0-92bc-c557bc3b66a7 Co-authored-by: Marek Fort <marek@tuist.dev>
…ches across releases Amp-Thread-ID: https://ampcode.com/threads/T-01a1bfcc-5807-76c0-92bc-c557bc3b66a7 Co-authored-by: Marek Fort <marek@tuist.dev>
…ches across releases Co-authored-by: Marek Fort <marek@tuist.dev>
…ches across releases Amp-Thread-ID: https://ampcode.com/threads/T-01a1bfcc-5807-76c0-92bc-c557bc3b66a7 Co-authored-by: Marek Fort <marek@tuist.dev>
Build scripts and other host-linked outputs carry the host glibc's symbol versions. Without the C library in the rustc toolchain identity, a shared cache served a build script linked against glibc 2.39 to a glibc 2.35 host, which could not load it. Amp-Thread-ID: https://ampcode.com/threads/T-01a1bfcc-5807-76c0-92bc-c557bc3b66a7 Co-authored-by: Marek Fort <marek@tuist.dev>
The bootstrap was a cold Cargo build on every release runner, 14 minutes on Windows. The latest released Once now builds it from this checkout through the remote cache, so unchanged dependencies are cache hits. A release that cannot build the current graph falls back to Cargo, which keeps releases on the current prelude. Host-linked actions are now keyed by the host C library, so the Linux builds use the remote cache again. Amp-Thread-ID: https://ampcode.com/threads/T-01a1bfcc-5807-76c0-92bc-c557bc3b66a7 Co-authored-by: Marek Fort <marek@tuist.dev>
Amp-Thread-ID: https://ampcode.com/threads/T-01a1bfcc-5807-76c0-92bc-c557bc3b66a7 Co-authored-by: Marek Fort <marek@tuist.dev>
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.
Summary
Releases were gated by
Build Once.xcframework, which built five static libraries one after another (82 to 94 min), while every release build compiled Once twice from a cold cache.onceworkflow.Measurements
End-to-end Release runs on test branches with publishing disabled, measured from run start until publishing would begin:
ci/release-e2e-before(main)Build Once.xcframework94 min, darwin builds 36 min, Windows 47 min)once-corechange, Cargo bootstraponce-corechange, bootstrap built with OnceNotes