Reduce repeated CI setup and fixture generation - #3010
Merged
Merged
Conversation
Sebastian Thiel (Byron)
force-pushed
the
improve-CI-perf
branch
from
September 22, 2026 10:38
8932904 to
e82ccc4
Compare
<!-- agent --> The CI runs for #2847 and #3008 both spend about 22 minutes validating very different changes. Preserve every distinct feature configuration and test environment while removing work that does not add coverage. Generate the common `gix-url` URL diagnostics once for both platform baselines, reducing `git fetch-pack` calls from 846 to 436 with byte-identical output. Prioritize one test for each of three expensive Windows fixtures so their generation can overlap with other tests, without changing concurrency. Share the root Cargo target across the separate fuzz workspace checks and reuse `test-fast` dependency caches in the Windows fixture jobs. Keep those test jobs parallel with independent checkouts. Install the pinned `cargo-machete` binary, run documentation generation only in the lint job, and remove four literal duplicate test commands while preserving all 85 unique commands and the local `ci-test` recipe. Make expected-failure checks explicit: standalone `!` commands suppress `set -e`, and the `rg` dependency guard also silently passed when `rg` was unavailable. Use the existing `grep` tool and fail with context when an asserted condition is violated. Assisted-by: GPT 6.0 Co-authored-by: GPT 6.0 <codex@openai.com>
Sebastian Thiel (Byron)
marked this pull request as ready for review
September 22, 2026 10:39
Sebastian Thiel (Byron)
force-pushed
the
improve-CI-perf
branch
from
September 22, 2026 10:39
e82ccc4 to
fbf8d1f
Compare
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.
Tasks
Created by Codex on behalf of Byron. Byron will review before this is ready to merge.
Summary
Reduce repeated CI setup and fixture generation while preserving every distinct feature configuration, platform, and test environment.
git fetch-pack --diag-urlcalls, with identical output. Start one test for each of three expensive Windows fixtures earlier so independent generation can overlap.test-fastdependency cache in fixture jobs, retaining separate checkouts and parallel execution.cargo-macheteversion from a prebuilt binary. All 85 unique unit-test commands and the localci-testrecipe remain.!commands suppressset -e, and the dependency guard also silently passed whenrgwas unavailable. Use the existinggreptool and report unexpected success as a failure.Context
The audit compared #2847 and #3008: 798 changed files versus five, but both CI runs took approximately 22 minutes. Windows ARM fixture testing was the slowest job in both, with roughly 15 minutes of test execution alone. Each Linux fuzz-check loop also compiled
libfuzzer-sys23 times in separate target directories.The requested priority is shorter completion time without risking missed feature combinations. Following the emphasis on repeated setup and slow tests in Linear's CI write-up, this keeps both Windows fixture modes parallel and preserves per-crate feature checks. It does not introduce change-based test selection, additional shards, or a new runner provider.
Windows scheduling gains and end-to-end CI savings still require measurement on the hosted runners. The changes do not increase test concurrency.
Validation
etc/scripts/ci-check-local.sh --thoroughpassed on macOS with Rust 1.98.1, including the feature-check matrix, feature-specific tests, doctests, 4,265 workspace tests, and all four journey configurations. Tix recorded the checks-pass mark for commit8932904.gix-urltests passed: 20 unit tests, 151 integration tests, and three doctests. An isolated before/after fixture comparison produced byte-identical Unix, Windows, and remote-helper baselines; one local measurement decreased from 6.48s to 3.89s.User Prompts