Add Windows ARM64 cross-compiled archive path#22686
Open
starr-openai wants to merge 2 commits into
Open
Conversation
e600f42 to
8718dfc
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.
Why
Windows ARM64 full-CI test shards currently each build their own ARM64 test binaries on native ARM64 runners before they can start running tests. That makes the ARM64 test path spend most of its critical path rebuilding the same artifacts four times.
This PR changes that path to build the Windows ARM64 nextest archive once on an x64 Windows runner, then fan the uploaded archive out to the ARM64 test shards.
What changed
rust-ci-full.ymlLatency
Measured against the earlier direct ARM64 shard path:
00:11:43Z, last ARM64 shard finish00:53:49Z->42m06scritical path22:51:05Z, last ARM64 archive shard finish23:15:57Z->24m52scritical path17m14sfaster, about41%lower ARM64 test critical pathThe archive producer itself took
14m08s; once the archive was available, the four ARM64 archive shards completed in7m07s,5m33s,6m18s, and7m26s.Validation
8718dfc9d9ddfd911a5fae2d57159e26ed606f4b,Build Windows arm64 nextest archiveand all four Windows ARM64 archive shards succeededStack
starr/windows-ci-arm64-shards-4-full-ciNotes
How it works
The workflow keeps the existing Windows ARM64 shard shape, but separates compilation from test execution. Instead of having each native ARM64 shard build the same test binaries before running its partition, one x64 Windows job cross-compiles the ARM64 nextest archive once and uploads it as an artifact.
The workflow then fans that archive back out to the Windows ARM64 shard jobs. Those jobs still run on ARM64 Windows runners and still use the same nextest partitioning, but they download the shared archive and invoke
cargo nextest run --archive-file ...rather than rebuilding.--workspace-remappoints nextest at the current checkout, and--extract-togives each shard a local extraction directory for the archived binaries.The MSVC setup action is what makes the producer possible: it configures an x64 Windows host with the ARM64 MSVC target environment, selects the right linker, and applies the small ARM64/lld compatibility shim needed for this cross-compiled archive path. The full-CI gatherer then treats the archive producer and archive-backed ARM64 shards as required workflow results, so the optimized path cannot fail silently.