Skip to content

Commit c5b6a35

Browse files
authored
Scope CI jobs by touched entries (#78)
1 parent 8179766 commit c5b6a35

1 file changed

Lines changed: 42 additions & 0 deletions

File tree

.github/workflows/ci.yml

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,45 @@ concurrency:
1111

1212
permissions:
1313
contents: read
14+
pull-requests: read
1415

1516
jobs:
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
@@ -36,6 +70,8 @@ jobs:
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
@@ -56,6 +92,8 @@ jobs:
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
@@ -67,6 +105,8 @@ jobs:
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

Comments
 (0)