@@ -222,12 +222,19 @@ jobs:
222222 needs :
223223 - build-backend
224224 - detect-changes
225- # Only run if backend files changed or always on develop/master
226- if : needs.detect-changes.outputs.backend == 'true' || github.ref_name == 'develop' || github.ref_name == 'master'
227225 permissions :
228226 contents : read
229227 packages : read
230228 steps :
229+ - name : Exit early if backend not changed and not develop/master
230+ run : |
231+ if [[ "${{ needs.detect-changes.outputs.backend }}" != "true" && \
232+ "${{ github.ref_name }}" != "develop" && \
233+ "${{ github.ref_name }}" != "master" ]]; then
234+ echo "No backend changes detected — skipping backend lint."
235+ exit 0
236+ fi
237+
231238 - name : Log in to GitHub Container Registry
232239 uses : docker/login-action@v3
233240 with :
@@ -244,11 +251,19 @@ jobs:
244251 needs :
245252 - build-frontend
246253 - detect-changes
247- if : needs.detect-changes.outputs.frontend == 'true' || github.ref_name == 'develop' || github.ref_name == 'master'
248254 permissions :
249255 contents : read
250256 packages : read
251257 steps :
258+ - name : Exit early if frontend not changed and not develop/master
259+ run : |
260+ if [[ "${{ needs.detect-changes.outputs.frontend }}" != "true" && \
261+ "${{ github.ref_name }}" != "develop" && \
262+ "${{ github.ref_name }}" != "master" ]]; then
263+ echo "No backend changes detected — skipping backend lint."
264+ exit 0
265+ fi
266+
252267 - name : Log in to GitHub Container Registry
253268 uses : docker/login-action@v3
254269 with :
@@ -266,10 +281,18 @@ jobs:
266281 - backend-lint
267282 - frontend-lint
268283 - detect-changes
269- if : needs.detect-changes.outputs.dockerfiles == 'true' || github.ref_name == 'develop' || github.ref_name == 'master'
270284 permissions :
271285 contents : read
272286 steps :
287+ - name : Exit early if dockerfiles not changed and not develop/master
288+ run : |
289+ if [[ "${{ needs.detect-changes.outputs.dockerfiles }}" != "true" && \
290+ "${{ github.ref_name }}" != "develop" && \
291+ "${{ github.ref_name }}" != "master" ]]; then
292+ echo "No backend changes detected — skipping backend lint."
293+ exit 0
294+ fi
295+
273296 - name : Checkout code
274297 uses : actions/checkout@v4
275298
@@ -313,7 +336,6 @@ jobs:
313336 - build-backend
314337 - backend-lint
315338 - detect-changes
316- if : needs.detect-changes.outputs.backend == 'true' || github.ref_name == 'develop' || github.ref_name == 'master'
317339 permissions :
318340 contents : read
319341 packages : read
@@ -330,6 +352,15 @@ jobs:
330352 --health-timeout 5s
331353 --health-retries 5
332354 steps :
355+ - name : Exit early if backend not changed and not develop/master
356+ run : |
357+ if [[ "${{ needs.detect-changes.outputs.backend }}" != "true" && \
358+ "${{ github.ref_name }}" != "develop" && \
359+ "${{ github.ref_name }}" != "master" ]]; then
360+ echo "No backend changes detected — skipping backend lint."
361+ exit 0
362+ fi
363+
333364 - name : Log in to GitHub Container Registry
334365 uses : docker/login-action@v3
335366 with :
@@ -361,7 +392,6 @@ jobs:
361392 - build-backend
362393 - backend-lint
363394 - detect-changes
364- if : needs.detect-changes.outputs.backend == 'true' || github.ref_name == 'develop' || github.ref_name == 'master'
365395 permissions :
366396 contents : read
367397 packages : read
@@ -384,6 +414,15 @@ jobs:
384414 --health-timeout 5s
385415 --health-retries 5
386416 steps :
417+ - name : Exit early if backend not changed and not develop/master
418+ run : |
419+ if [[ "${{ needs.detect-changes.outputs.backend }}" != "true" && \
420+ "${{ github.ref_name }}" != "develop" && \
421+ "${{ github.ref_name }}" != "master" ]]; then
422+ echo "No backend changes detected — skipping backend lint."
423+ exit 0
424+ fi
425+
387426 - name : Log in to GitHub Container Registry
388427 uses : docker/login-action@v3
389428 with :
@@ -433,7 +472,6 @@ jobs:
433472 - build-frontend
434473 - frontend-lint
435474 - detect-changes
436- if : needs.detect-changes.outputs.frontend == 'true' || github.ref_name == 'develop' || github.ref_name == 'master'
437475 permissions :
438476 contents : read
439477 packages : read
@@ -444,6 +482,15 @@ jobs:
444482 matrix :
445483 shard : [1, 2, 3, 4]
446484 steps :
485+ - name : Exit early if frontend not changed and not develop/master
486+ run : |
487+ if [[ "${{ needs.detect-changes.outputs.frontend }}" != "true" && \
488+ "${{ github.ref_name }}" != "develop" && \
489+ "${{ github.ref_name }}" != "master" ]]; then
490+ echo "No backend changes detected — skipping backend lint."
491+ exit 0
492+ fi
493+
447494 - name : Log in to GitHub Container Registry
448495 uses : docker/login-action@v3
449496 with :
@@ -486,10 +533,18 @@ jobs:
486533 - backend-lint
487534 - frontend-lint
488535 - detect-changes
489- if : needs.detect-changes.outputs.zapier == 'true' || github.ref_name == 'develop' || github.ref_name == 'master'
490536 permissions :
491537 contents : read
492538 steps :
539+ - name : Exit early if zapier not changed and not develop/master
540+ run : |
541+ if [[ "${{ needs.detect-changes.outputs.zapier }}" != "true" && \
542+ "${{ github.ref_name }}" != "develop" && \
543+ "${{ github.ref_name }}" != "master" ]]; then
544+ echo "No backend changes detected — skipping backend lint."
545+ exit 0
546+ fi
547+
493548 - name : Checkout code
494549 uses : actions/checkout@v4
495550
@@ -511,10 +566,18 @@ jobs:
511566 - backend-lint
512567 - frontend-lint
513568 - detect-changes
514- if : needs.detect-changes.outputs.mjml == 'true' || github.ref_name == 'develop' || github.ref_name == 'master'
515569 permissions :
516570 contents : read
517571 steps :
572+ - name : Exit early if mjml not changed and not develop/master
573+ run : |
574+ if [[ "${{ needs.detect-changes.outputs.mjml }}" != "true" && \
575+ "${{ github.ref_name }}" != "develop" && \
576+ "${{ github.ref_name }}" != "master" ]]; then
577+ echo "No backend changes detected — skipping backend lint."
578+ exit 0
579+ fi
580+
518581 - name : Checkout code
519582 uses : actions/checkout@v4
520583
@@ -545,7 +608,6 @@ jobs:
545608 name : E2E Tests (Shard ${{ matrix.shard }})
546609 timeout-minutes : 60
547610 runs-on : ubuntu-latest
548- if : needs.detect-changes.outputs.backend == 'true' || needs.detect-changes.outputs.frontend == 'true' || needs.detect-changes.outputs.dockerfiles == 'true' || github.ref_name == 'develop' || github.ref_name == 'master'
549611 needs :
550612 - build-backend
551613 - build-frontend
@@ -586,6 +648,17 @@ jobs:
586648 ports :
587649 - 9090:9090
588650 steps :
651+ - name : Exit early if no relevant changes
652+ run : |
653+ if [[ "${{ needs.detect-changes.outputs.backend }}" != "true" && \
654+ "${{ needs.detect-changes.outputs.frontend }}" != "true" && \
655+ "${{ needs.detect-changes.outputs.dockerfiles }}" != "true" && \
656+ "${{ github.ref_name }}" != "develop" && \
657+ "${{ github.ref_name }}" != "master" ]]; then
658+ echo "No backend, frontend, or Dockerfile changes detected — skipping job."
659+ exit 0
660+ fi
661+
589662 - name : Checkout code
590663 uses : actions/checkout@v4
591664
0 commit comments