7
7
OUTPUT_MODE : quiet
8
8
9
9
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
+
10
28
skip_if_release :
11
29
runs-on : ubuntu-latest
12
30
22
40
do_not_skip : ' ["workflow_dispatch", "pull_request"]'
23
41
24
42
lint :
25
- needs : skip_if_release
43
+ needs :
44
+ - skip_if_release
45
+ - should_run
26
46
if : needs.skip_if_release.outputs.should_skip != 'true'
47
+ && needs.should_run.outputs.javascript_changed == 'true'
27
48
runs-on : ubuntu-latest
28
49
29
50
strategy :
44
65
run : npm run lint:lockfile
45
66
46
67
ci :
47
- needs : skip_if_release
68
+ needs :
69
+ - skip_if_release
70
+ - should_run
48
71
if : needs.skip_if_release.outputs.should_skip != 'true'
72
+ && needs.should_run.outputs.javascript_changed == 'true'
49
73
runs-on : ubuntu-latest
50
74
51
75
strategy :
65
89
run : npm run unit:scripts
66
90
67
91
unit :
68
- needs : skip_if_release
92
+ needs :
93
+ - skip_if_release
94
+ - should_run
69
95
if : needs.skip_if_release.outputs.should_skip != 'true'
96
+ && needs.should_run.outputs.javascript_changed == 'true'
70
97
runs-on : ubuntu-latest
71
98
72
99
strategy :
@@ -89,9 +116,13 @@ jobs:
89
116
with :
90
117
name : unit-tests-${{ matrix.node-version }}
91
118
path : ./coverage/unit/lcov.info
119
+
92
120
integration :
93
- needs : skip_if_release
121
+ needs :
122
+ - skip_if_release
123
+ - should_run
94
124
if : needs.skip_if_release.outputs.should_skip != 'true'
125
+ && needs.should_run.outputs.javascript_changed == 'true'
95
126
runs-on : ubuntu-latest
96
127
97
128
env :
@@ -128,8 +159,11 @@ jobs:
128
159
path : ./coverage/integration-esm/lcov.info
129
160
130
161
versioned-internal :
131
- needs : skip_if_release
162
+ needs :
163
+ - skip_if_release
164
+ - should_run
132
165
if : needs.skip_if_release.outputs.should_skip != 'true'
166
+ && needs.should_run.outputs.javascript_changed == 'true'
133
167
runs-on : ${{ github.ref == 'refs/heads/main' && vars.NR_RUNNER || 'ubuntu-latest' }}
134
168
135
169
strategy :
@@ -176,8 +210,11 @@ jobs:
176
210
177
211
# There is no coverage for external as that's tracked in their respective repos
178
212
versioned-external :
179
- needs : skip_if_release
213
+ needs :
214
+ - skip_if_release
215
+ - should_run
180
216
if : needs.skip_if_release.outputs.should_skip != 'true'
217
+ && needs.should_run.outputs.javascript_changed == 'true'
181
218
runs-on : ${{ github.ref == 'refs/heads/main' && vars.NR_RUNNER || 'ubuntu-latest' }}
182
219
183
220
strategy :
@@ -199,6 +236,7 @@ jobs:
199
236
VERSIONED_MODE : ${{ github.ref == 'refs/heads/main' && '--minor' || '--major' }}
200
237
# Run more jobs when using larger runner, otherwise 2 per CPU seems to be the sweet spot in GHA default runners(July 2022)
201
238
JOBS : ${{ github.ref == 'refs/heads/main' && vars.NR_RUNNER && 16 || 4 }}
239
+
202
240
codecov :
203
241
needs : [unit, integration, versioned-internal]
204
242
runs-on : ubuntu-latest
@@ -229,3 +267,21 @@ jobs:
229
267
token : ${{ secrets.CODECOV_TOKEN }}
230
268
directory : versioned-tests-${{ matrix.node-version }}
231
269
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