Skip to content

Commit 3b7d763

Browse files
committed
ci: udpate ci filter to succeed if no relevant changes
1 parent 222dae8 commit 3b7d763

File tree

1 file changed

+56
-19
lines changed

1 file changed

+56
-19
lines changed

.github/workflows/rust.yml

Lines changed: 56 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,83 +1,95 @@
11
name: Rust CI
2-
32
on:
43
pull_request:
5-
paths-ignore:
6-
- 'frontend/**'
74
push:
85
branches:
96
- main
10-
117
concurrency:
128
group: rust-${{ github.ref }}
139
cancel-in-progress: true
14-
1510
permissions:
1611
contents: read
17-
1812
defaults:
1913
run:
2014
# Enable fail-fast behavior
2115
shell: bash -e {0}
22-
2316
env:
2417
# Disable incremental compilation for faster from-scratch builds
2518
CARGO_INCREMENTAL: 0
2619
RUSTFLAGS: "--cfg tokio_unstable"
2720
CARGO_TERM_COLOR: always
28-
2921
jobs:
22+
# Detect if rust code changed
23+
changes:
24+
runs-on: ubuntu-latest
25+
outputs:
26+
rust: ${{ steps.filter.outputs.rust }}
27+
steps:
28+
- uses: actions/checkout@v4
29+
- uses: dorny/paths-filter@v2
30+
id: filter
31+
with:
32+
filters: |
33+
rust:
34+
- '**/*.rs'
35+
- '**/Cargo.toml'
36+
- '**/Cargo.lock'
37+
- '.github/workflows/rust-ci.yml'
38+
3039
fmt:
3140
name: Rustfmt
3241
runs-on: ubuntu-latest
42+
needs: changes
43+
if: needs.changes.outputs.rust == 'true'
3344
steps:
3445
- uses: actions/checkout@v4
35-
3646
- uses: actions-rust-lang/setup-rust-toolchain@v1
3747
with:
3848
toolchain: stable
3949
components: rustfmt
40-
4150
- name: Check formatting
4251
run: cargo fmt --all -- --check
43-
52+
4453
# clippy:
4554
# name: Clippy
4655
# runs-on: depot-ubuntu-24.04
56+
# needs: changes
57+
# if: needs.changes.outputs.rust == 'true'
4758
# steps:
4859
# - uses: actions/checkout@v4
49-
60+
#
5061
# - uses: actions-rust-lang/setup-rust-toolchain@v1
5162
# with:
5263
# toolchain: stable
5364
# components: clippy
54-
65+
#
5566
# - uses: Swatinem/rust-cache@v2
56-
67+
#
5768
# - name: Run clippy
5869
# run: cargo clippy --all-targets --all-features -- -W warnings
59-
70+
6071
check:
6172
name: Check
6273
runs-on: depot-ubuntu-24.04
74+
needs: changes
75+
if: needs.changes.outputs.rust == 'true'
6376
steps:
6477
- uses: actions/checkout@v4
65-
6678
- uses: actions-rust-lang/setup-rust-toolchain@v1
6779
with:
6880
toolchain: stable
69-
7081
- uses: Swatinem/rust-cache@v2
71-
7282
- name: Check
7383
run: cargo check --all-targets --all-features
7484
env:
7585
# Deny warnings
7686
RUSTFLAGS: --cfg tokio_unstable -D warnings
77-
87+
7888
# test:
7989
# name: Test
8090
# runs-on: depot-ubuntu-24.04
91+
# needs: changes
92+
# if: needs.changes.outputs.rust == 'true'
8193
# steps:
8294
# - uses: actions/checkout@v4
8395
#
@@ -93,9 +105,34 @@ jobs:
93105
# deny:
94106
# name: Deny
95107
# runs-on: ubuntu-latest
108+
# needs: changes
109+
# if: needs.changes.outputs.rust == 'true'
96110
# steps:
97111
# - uses: actions/checkout@v4
98112
# - name: cargo deny
99113
# uses: EmbarkStudios/cargo-deny-action@v1
100114
# with:
101115
# rust-version: "1.88.0"
116+
117+
# This job always runs and should be the required status check
118+
status-check:
119+
name: Rust CI Status
120+
runs-on: ubuntu-latest
121+
needs: [changes, fmt, check]
122+
if: always()
123+
steps:
124+
- name: Check job status
125+
run: |
126+
# If rust code didn't change, consider it a pass
127+
if [ "${{ needs.changes.outputs.rust }}" != "true" ]; then
128+
echo "No Rust changes detected, skipping checks"
129+
exit 0
130+
fi
131+
132+
# If rust code changed, verify all jobs passed
133+
if [ "${{ needs.fmt.result }}" == "failure" ] || [ "${{ needs.check.result }}" == "failure" ]; then
134+
echo "One or more required jobs failed"
135+
exit 1
136+
fi
137+
138+
echo "All Rust checks passed"

0 commit comments

Comments
 (0)