@@ -11,11 +11,45 @@ concurrency:
1111
1212permissions :
1313 contents : read
14+ pull-requests : read
1415
1516jobs :
17+ changes :
18+ name : detect touched entries
19+ runs-on : ubuntu-latest
20+ outputs :
21+ cli : ${{ steps.filter.outputs.cli }}
22+ dashboard_ui : ${{ steps.filter.outputs['dashboard-ui'] }}
23+ ledger : ${{ steps.filter.outputs.ledger }}
24+ control_plane : ${{ steps.filter.outputs['control-plane'] }}
25+ gitleaks : ${{ steps.filter.outputs.gitleaks }}
26+ steps :
27+ - uses : actions/checkout@v6
28+ - id : filter
29+ uses : dorny/paths-filter@v3
30+ with :
31+ filters : |
32+ cli:
33+ - "cli/**"
34+ - ".github/workflows/ci.yml"
35+ dashboard-ui:
36+ - "control-plane/dashboard-ui/**"
37+ - ".github/workflows/ci.yml"
38+ ledger:
39+ - "ledger/**"
40+ - ".github/workflows/ci.yml"
41+ control-plane:
42+ - "control-plane/**"
43+ - "ledger/**"
44+ - ".github/workflows/ci.yml"
45+ gitleaks:
46+ - "**"
47+
1648 cli :
1749 name : cli (bun typecheck + tests)
1850 runs-on : ubuntu-latest
51+ needs : changes
52+ if : needs.changes.outputs.cli == 'true'
1953 steps :
2054 - uses : actions/checkout@v6
2155 - uses : oven-sh/setup-bun@v2
3670 dashboard-ui :
3771 name : dashboard-ui (typecheck + build)
3872 runs-on : ubuntu-latest
73+ needs : changes
74+ if : needs.changes.outputs.dashboard_ui == 'true'
3975 steps :
4076 - uses : actions/checkout@v6
4177 - uses : oven-sh/setup-bun@v2
5692 ledger :
5793 name : ledger (cargo test)
5894 runs-on : ubuntu-latest
95+ needs : changes
96+ if : needs.changes.outputs.ledger == 'true'
5997 steps :
6098 - uses : actions/checkout@v6
6199 - uses : dtolnay/rust-toolchain@stable
67105 control-plane :
68106 name : control-plane (go vet + go test -race)
69107 runs-on : ubuntu-latest
108+ needs : changes
109+ if : needs.changes.outputs.control_plane == 'true'
70110 steps :
71111 - uses : actions/checkout@v6
72112 - uses : actions/setup-go@v5
@@ -104,6 +144,8 @@ jobs:
104144 gitleaks :
105145 name : gitleaks (secret scan)
106146 runs-on : ubuntu-latest
147+ needs : changes
148+ if : needs.changes.outputs.gitleaks == 'true'
107149 steps :
108150 - uses : actions/checkout@v6
109151 with : { fetch-depth: 0 }
0 commit comments