Skip to content

Commit 4bd7164

Browse files
author
EchoBT
committed
ci: optimize workflow with disk cleanup and rust-cache
- Free disk space (~30GB) before each job - Use Swatinem/rust-cache@v2 for smarter caching - Disable cache save on test/clippy jobs to avoid disk full errors - Cleanup build artifacts before cache save - Remove QEMU (not needed for amd64 only)
1 parent c8a392e commit 4bd7164

File tree

2 files changed

+48
-29
lines changed

2 files changed

+48
-29
lines changed

.github/workflows/ci.yml

Lines changed: 47 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ on:
99

1010
env:
1111
CARGO_TERM_COLOR: always
12+
CARGO_INCREMENTAL: 0
1213
RUST_BACKTRACE: 1
1314
REGISTRY: ghcr.io
1415
IMAGE_NAME: ${{ github.repository }}
@@ -18,32 +19,43 @@ jobs:
1819
name: Build
1920
runs-on: ubuntu-latest
2021
steps:
22+
- name: Free disk space
23+
run: |
24+
sudo rm -rf /usr/share/dotnet /usr/local/lib/android /opt/ghc /opt/hostedtoolcache/CodeQL
25+
sudo docker image prune --all --force
26+
df -h
27+
2128
- name: Checkout code
2229
uses: actions/checkout@v4
2330

2431
- name: Setup Rust toolchain
2532
uses: dtolnay/rust-toolchain@stable
2633

2734
- name: Cache cargo
28-
uses: actions/cache@v4
35+
uses: Swatinem/rust-cache@v2
2936
with:
30-
path: |
31-
~/.cargo/registry
32-
~/.cargo/git
33-
target
34-
key: ${{ runner.os }}-cargo-build-${{ hashFiles('**/Cargo.lock') }}
35-
restore-keys: |
36-
${{ runner.os }}-cargo-build-
37+
cache-on-failure: true
3738

3839
- name: Build
39-
run: cargo build --release --verbose
40+
run: cargo build --release
41+
42+
- name: Cleanup before cache
43+
run: |
44+
rm -rf target/release/.fingerprint target/release/build target/release/deps target/release/examples target/release/incremental
45+
find target -name "*.d" -delete
46+
df -h
4047
4148
test:
4249
name: Test
4350
runs-on: ubuntu-latest
4451
permissions:
4552
contents: write
4653
steps:
54+
- name: Free disk space
55+
run: |
56+
sudo rm -rf /usr/share/dotnet /usr/local/lib/android /opt/ghc /opt/hostedtoolcache/CodeQL
57+
sudo docker image prune --all --force
58+
4759
- name: Checkout code
4860
uses: actions/checkout@v4
4961

@@ -56,15 +68,10 @@ jobs:
5668
uses: taiki-e/install-action@cargo-llvm-cov
5769

5870
- name: Cache cargo
59-
uses: actions/cache@v4
71+
uses: Swatinem/rust-cache@v2
6072
with:
61-
path: |
62-
~/.cargo/registry
63-
~/.cargo/git
64-
target
65-
key: ${{ runner.os }}-cargo-test-${{ hashFiles('**/Cargo.lock') }}
66-
restore-keys: |
67-
${{ runner.os }}-cargo-test-
73+
cache-on-failure: true
74+
save-if: false
6875

6976
- name: Run tests with coverage
7077
run: cargo llvm-cov --workspace --json --output-path coverage.json
@@ -94,6 +101,11 @@ jobs:
94101
name: Clippy
95102
runs-on: ubuntu-latest
96103
steps:
104+
- name: Free disk space
105+
run: |
106+
sudo rm -rf /usr/share/dotnet /usr/local/lib/android /opt/ghc /opt/hostedtoolcache/CodeQL
107+
sudo docker image prune --all --force
108+
97109
- name: Checkout code
98110
uses: actions/checkout@v4
99111

@@ -103,15 +115,10 @@ jobs:
103115
components: clippy
104116

105117
- name: Cache cargo
106-
uses: actions/cache@v4
118+
uses: Swatinem/rust-cache@v2
107119
with:
108-
path: |
109-
~/.cargo/registry
110-
~/.cargo/git
111-
target
112-
key: ${{ runner.os }}-cargo-clippy-${{ hashFiles('**/Cargo.lock') }}
113-
restore-keys: |
114-
${{ runner.os }}-cargo-clippy-
120+
cache-on-failure: true
121+
save-if: false
115122

116123
- name: Run clippy
117124
run: cargo clippy --all-targets --workspace -- -W clippy::all
@@ -124,12 +131,14 @@ jobs:
124131
contents: read
125132
packages: write
126133
steps:
134+
- name: Free disk space
135+
run: |
136+
sudo rm -rf /usr/share/dotnet /usr/local/lib/android /opt/ghc /opt/hostedtoolcache/CodeQL
137+
sudo docker image prune --all --force
138+
127139
- name: Checkout code
128140
uses: actions/checkout@v4
129141

130-
- name: Set up QEMU
131-
uses: docker/setup-qemu-action@v3
132-
133142
- name: Set up Docker Buildx
134143
uses: docker/setup-buildx-action@v3
135144

@@ -173,12 +182,22 @@ jobs:
173182
permissions:
174183
contents: write
175184
steps:
185+
- name: Free disk space
186+
run: |
187+
sudo rm -rf /usr/share/dotnet /usr/local/lib/android /opt/ghc /opt/hostedtoolcache/CodeQL
188+
sudo docker image prune --all --force
189+
176190
- name: Checkout code
177191
uses: actions/checkout@v4
178192

179193
- name: Setup Rust toolchain
180194
uses: dtolnay/rust-toolchain@stable
181195

196+
- name: Cache cargo
197+
uses: Swatinem/rust-cache@v2
198+
with:
199+
save-if: false
200+
182201
- name: Build release binaries
183202
run: cargo build --release
184203

Cargo.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)