@@ -35,11 +35,15 @@ jobs:
3535
3636 docs :
3737 name : Documentation
38+ needs : build
3839 runs-on : ubuntu-latest
3940 steps :
4041 - uses : actions/checkout@v6
4142 - uses : dtolnay/rust-toolchain@stable
4243 - uses : Swatinem/rust-cache@v2
44+ with :
45+ shared-key : " rust-cache-ubuntu-latest"
46+ save-if : false
4347 - name : Build documentation
4448 env :
4549 RUSTDOCFLAGS : -D warnings
5963 - name : Check all crates are assigned to test groups
6064 run : python .github/scripts/ci_config.py verify-groups
6165
66+ # Build job compiles all dependencies first, populating the cache for test jobs
67+ build :
68+ name : " build (${{ matrix.os }})"
69+ needs : verify-execution
70+ runs-on : ${{ matrix.os }}
71+ strategy :
72+ fail-fast : false
73+ matrix :
74+ os : [ubuntu-latest, ubuntu-22.04-arm, macos-latest, windows-latest]
75+ steps :
76+ - uses : actions/checkout@v6
77+ - uses : dtolnay/rust-toolchain@stable
78+ - uses : Swatinem/rust-cache@v2
79+ with :
80+ shared-key : " rust-cache-${{ matrix.os }}"
81+ cache-on-failure : true
82+ - name : Build workspace (populate cache)
83+ run : cargo build --workspace --all-targets --all-features
84+
6285 test :
6386 name : " test: ${{ matrix.group }} (${{ matrix.os }})"
64- needs : verify-execution
87+ needs : build
6588 runs-on : ${{ matrix.os }}
6689 strategy :
6790 fail-fast : false
7396 - uses : dtolnay/rust-toolchain@stable
7497 - uses : Swatinem/rust-cache@v2
7598 with :
76- shared-key : " rust-cache-${{ matrix.os }}-${{ matrix.group }}"
99+ shared-key : " rust-cache-${{ matrix.os }}"
100+ save-if : false
77101 - uses : actions/setup-python@v5
78102 with :
79103 python-version : " 3.12"
@@ -85,11 +109,15 @@ jobs:
85109
86110 no-std :
87111 name : No-std Checks
112+ needs : build
88113 runs-on : ubuntu-latest
89114 steps :
90115 - uses : actions/checkout@v6
91116 - uses : dtolnay/rust-toolchain@stable
92117 - uses : Swatinem/rust-cache@v2
118+ with :
119+ shared-key : " rust-cache-ubuntu-latest"
120+ save-if : false
93121 - uses : actions/setup-python@v5
94122 with :
95123 python-version : " 3.12"
0 commit comments