Skip to content

Commit 8639fb9

Browse files
authored
chore: Updated CI to skip expensive actions when not needed (#2184)
1 parent 6968f0a commit 8639fb9

File tree

1 file changed

+62
-6
lines changed

1 file changed

+62
-6
lines changed

.github/workflows/ci-workflow.yml

Lines changed: 62 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,24 @@ env:
77
OUTPUT_MODE: quiet
88

99
jobs:
10+
should_run:
11+
runs-on: ubuntu-latest
12+
permissions:
13+
pull-requests: read
14+
outputs:
15+
javascript_changed: ${{ steps.filter.output.javascript }}
16+
steps:
17+
- uses: actions/checkout@v4
18+
- uses: dorny/paths-filter@v3
19+
id: filter
20+
with:
21+
filters: |
22+
javascript:
23+
- '**/*.js'
24+
- '**/*.json'
25+
- '**/*.mjs'
26+
- '**/*.cjs'
27+
1028
skip_if_release:
1129
runs-on: ubuntu-latest
1230

@@ -22,8 +40,11 @@ jobs:
2240
do_not_skip: '["workflow_dispatch", "pull_request"]'
2341

2442
lint:
25-
needs: skip_if_release
43+
needs:
44+
- skip_if_release
45+
- should_run
2646
if: needs.skip_if_release.outputs.should_skip != 'true'
47+
&& needs.should_run.outputs.javascript_changed == 'true'
2748
runs-on: ubuntu-latest
2849

2950
strategy:
@@ -44,8 +65,11 @@ jobs:
4465
run: npm run lint:lockfile
4566

4667
ci:
47-
needs: skip_if_release
68+
needs:
69+
- skip_if_release
70+
- should_run
4871
if: needs.skip_if_release.outputs.should_skip != 'true'
72+
&& needs.should_run.outputs.javascript_changed == 'true'
4973
runs-on: ubuntu-latest
5074

5175
strategy:
@@ -65,8 +89,11 @@ jobs:
6589
run: npm run unit:scripts
6690

6791
unit:
68-
needs: skip_if_release
92+
needs:
93+
- skip_if_release
94+
- should_run
6995
if: needs.skip_if_release.outputs.should_skip != 'true'
96+
&& needs.should_run.outputs.javascript_changed == 'true'
7097
runs-on: ubuntu-latest
7198

7299
strategy:
@@ -89,9 +116,13 @@ jobs:
89116
with:
90117
name: unit-tests-${{ matrix.node-version }}
91118
path: ./coverage/unit/lcov.info
119+
92120
integration:
93-
needs: skip_if_release
121+
needs:
122+
- skip_if_release
123+
- should_run
94124
if: needs.skip_if_release.outputs.should_skip != 'true'
125+
&& needs.should_run.outputs.javascript_changed == 'true'
95126
runs-on: ubuntu-latest
96127

97128
env:
@@ -128,8 +159,11 @@ jobs:
128159
path: ./coverage/integration-esm/lcov.info
129160

130161
versioned-internal:
131-
needs: skip_if_release
162+
needs:
163+
- skip_if_release
164+
- should_run
132165
if: needs.skip_if_release.outputs.should_skip != 'true'
166+
&& needs.should_run.outputs.javascript_changed == 'true'
133167
runs-on: ${{ github.ref == 'refs/heads/main' && vars.NR_RUNNER || 'ubuntu-latest' }}
134168

135169
strategy:
@@ -176,8 +210,11 @@ jobs:
176210

177211
# There is no coverage for external as that's tracked in their respective repos
178212
versioned-external:
179-
needs: skip_if_release
213+
needs:
214+
- skip_if_release
215+
- should_run
180216
if: needs.skip_if_release.outputs.should_skip != 'true'
217+
&& needs.should_run.outputs.javascript_changed == 'true'
181218
runs-on: ${{ github.ref == 'refs/heads/main' && vars.NR_RUNNER || 'ubuntu-latest' }}
182219

183220
strategy:
@@ -199,6 +236,7 @@ jobs:
199236
VERSIONED_MODE: ${{ github.ref == 'refs/heads/main' && '--minor' || '--major' }}
200237
# Run more jobs when using larger runner, otherwise 2 per CPU seems to be the sweet spot in GHA default runners(July 2022)
201238
JOBS: ${{ github.ref == 'refs/heads/main' && vars.NR_RUNNER && 16 || 4 }}
239+
202240
codecov:
203241
needs: [unit, integration, versioned-internal]
204242
runs-on: ubuntu-latest
@@ -229,3 +267,21 @@ jobs:
229267
token: ${{ secrets.CODECOV_TOKEN }}
230268
directory: versioned-tests-${{ matrix.node-version }}
231269
flags: versioned-tests-${{ matrix.node-version }}
270+
271+
all-clear:
272+
if: always()
273+
runs-on: ubuntu-latest
274+
needs:
275+
- lint
276+
- ci
277+
- unit
278+
- integration
279+
- versioned-internal
280+
- versioned-external
281+
steps:
282+
- name: All checks passed
283+
if: ${{ !(contains(needs.*.result, 'failure')) }}
284+
run: exit 0
285+
- name: Some checks failed
286+
if: ${{ contains(needs.*.result, 'failure') }}
287+
run: exit 1

0 commit comments

Comments
 (0)