Skip to content

Commit 74e302e

Browse files
committed
improve caching
1 parent 2e3e253 commit 74e302e

File tree

2 files changed

+31
-8
lines changed

2 files changed

+31
-8
lines changed

.github/scripts/ci_config.py

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -160,12 +160,7 @@ def run_group_tests(args):
160160

161161
github_group_start(f"Testing {crate}")
162162

163-
# On Windows, skip --all-features to avoid x11 feature
164-
if args.os == "windows-latest":
165-
cmd = ["cargo", "test", "-p", crate]
166-
else:
167-
cmd = ["cargo", "test", "-p", crate, "--all-features"]
168-
163+
cmd = ["cargo", "test", "-p", crate, "--all-features"]
169164
result = subprocess.run(cmd)
170165

171166
github_group_end()

.github/workflows/rust.yml

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -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
@@ -59,9 +63,28 @@ jobs:
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
@@ -73,7 +96,8 @@ jobs:
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

Comments
 (0)