@@ -25,15 +25,57 @@ concurrency:
2525 cancel-in-progress : true
2626
2727jobs :
28+ api-check-needed :
29+ runs-on : ubuntu-latest
30+ outputs :
31+ should_skip : ${{ steps.skip_check.outputs.should_skip }}
32+ steps :
33+ - id : skip_check
34+ uses : fkirc/skip-duplicate-actions@v5
35+ with :
36+ skip_after_successful_duplicate : ' true'
37+ paths : |
38+ [
39+ "api/**",
40+ ".github/workflows/continuous-integration.yml"
41+ ]
42+ do_not_skip : ' ["workflow_dispatch", "schedule"]'
43+
44+ e2e-check-needed :
45+ runs-on : ubuntu-latest
46+ outputs :
47+ should_skip : ${{ steps.skip_check.outputs.should_skip }}
48+ steps :
49+ - id : skip_check
50+ uses : fkirc/skip-duplicate-actions@v5
51+ with :
52+ skip_after_successful_duplicate : ' true'
53+ paths : |
54+ [
55+ ".github/workflows/continuous-integration.yml",
56+ "api/**",
57+ "common/**",
58+ "e2e/**",
59+ "frontend/**",
60+ "pdf/**",
61+ "print/**",
62+ "docker-compose.yml",
63+ ".env.ci"
64+ ]
65+ do_not_skip : ' ["workflow_dispatch", "schedule"]'
66+
2867 api-cs-check :
2968 name : ' Lint: API (php-cs-fixer)'
3069 runs-on : ubuntu-latest
70+ needs :
71+ - api-check-needed
72+ if : needs.api-check-needed.outputs.should_skip != 'true'
3173 steps :
32- - uses : actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4
74+ - uses : actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4
3375
3476 - uses : shivammathur/setup-php@v2
3577 with :
36- php-version : ' 8.3.7 '
78+ php-version : ' 8.3.9 '
3779 tools : composer:2.7.0
3880 coverage : none
3981
59101 name : ' Lint: Frontend (ESLint)'
60102 runs-on : ubuntu-latest
61103 steps :
62- - uses : actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4
104+ - uses : actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4
63105
64106 - uses : actions/setup-node@v4
65107 with :
88130 name : ' Lint: ClientPrint (ESLint)'
89131 runs-on : ubuntu-latest
90132 steps :
91- - uses : actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4
133+ - uses : actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4
92134
93135 - uses : actions/setup-node@v4
94136 with :
@@ -117,7 +159,7 @@ jobs:
117159 name : ' Lint: Print (ESLint)'
118160 runs-on : ubuntu-latest
119161 steps :
120- - uses : actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4
162+ - uses : actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4
121163
122164 - uses : actions/setup-node@v4
123165 with :
@@ -145,8 +187,11 @@ jobs:
145187 e2e-lint :
146188 name : ' Lint: e2e (ESLint)'
147189 runs-on : ubuntu-latest
190+ needs :
191+ - e2e-check-needed
192+ if : needs.e2e-check-needed.outputs.should_skip != 'true'
148193 steps :
149- - uses : actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4
194+ - uses : actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4
150195
151196 - uses : actions/setup-node@v4
152197 with :
@@ -174,6 +219,9 @@ jobs:
174219 api-tests :
175220 name : ' Tests: API'
176221 runs-on : ubuntu-latest
222+ needs :
223+ - api-check-needed
224+ if : needs.api-check-needed.outputs.should_skip != 'true'
177225 env :
178226 TEST_DATABASE_URL : postgresql://ecamp3:ecamp3@localhost:5432/ecamp3test?serverVersion=15&charset=utf8
179227
@@ -193,11 +241,11 @@ jobs:
193241 --health-retries 5
194242
195243 steps :
196- - uses : actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4
244+ - uses : actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4
197245
198246 - uses : shivammathur/setup-php@v2
199247 with :
200- php-version : ' 8.3.7 '
248+ php-version : ' 8.3.9 '
201249 extensions : intl-73.1
202250 tools : composer:2.7.0
203251 coverage : pcov
@@ -251,7 +299,7 @@ jobs:
251299 name : ' Tests: Frontend'
252300 runs-on : ubuntu-latest
253301 steps :
254- - uses : actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4
302+ - uses : actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4
255303
256304 - uses : actions/setup-node@v4
257305 with :
@@ -294,7 +342,7 @@ jobs:
294342 name : ' Tests: Print'
295343 runs-on : ubuntu-latest
296344 steps :
297- - uses : actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4
345+ - uses : actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4
298346
299347 - uses : actions/setup-node@v4
300348 with :
@@ -333,7 +381,7 @@ jobs:
333381 name : ' Tests: PDF'
334382 runs-on : ubuntu-latest
335383 steps :
336- - uses : actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4
384+ - uses : actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4
337385
338386 - uses : actions/setup-node@v4
339387 with :
@@ -369,6 +417,9 @@ jobs:
369417 e2e-tests-build :
370418 name : ' Tests: End-to-end build'
371419 uses : ./.github/workflows/reusable-e2e-tests-build.yml
420+ needs :
421+ - e2e-check-needed
422+ if : needs.e2e-check-needed.outputs.should_skip != 'true'
372423
373424 e2e-tests-run :
374425 name : ' Tests: End-to-end run'
@@ -404,6 +455,7 @@ jobs:
404455 - frontend-tests
405456 - print-tests
406457 - pdf-tests
458+ - e2e-tests-build
407459 - e2e-tests-run
408460 runs-on : ubuntu-latest
409461 if : always()
@@ -416,8 +468,8 @@ jobs:
416468 const needsObject = JSON.parse(needs);
417469
418470 for (const [key, value] of Object.entries(needsObject)) {
419- if (value.result != 'success') {
420- core.setFailed(`Job ${key} failed`);
471+ if (![ 'success', 'skipped'].includes(value.result) ) {
472+ core.setFailed(`Job ${key} failed with status ${value.result} `);
421473 }
422474 }
423475
0 commit comments