@@ -12,15 +12,20 @@ jobs:
1212 runs-on : ubuntu-latest
1313
1414 outputs :
15- backendChanged : ${{ steps.detect.outputs.backendChanged }}
16- mobileChanged : ${{ steps.detect.outputs.mobileChanged }}
17- webChanged : ${{ steps.detect.outputs.webChanged }}
18- backendFiles : ${{ steps.detect.outputs.backendFiles }}
19- mobileFiles : ${{ steps.detect.outputs.mobileFiles }}
20- webFiles : ${{ steps.detect.outputs.webFiles }}
15+ backendChanged : ${{ steps.detect.outputs.backendChanged }}
16+ mobileChanged : ${{ steps.detect.outputs.mobileChanged }}
17+ webChanged : ${{ steps.detect.outputs.webChanged }}
18+ backendFiles : ${{ steps.detect.outputs.backendFiles }}
19+ mobileFiles : ${{ steps.detect.outputs.mobileFiles }}
20+ webFiles : ${{ steps.detect.outputs.webFiles }}
21+ backendTestFiles : ${{ steps.detect.outputs.backendTestFiles }}
22+ mobileTestFiles : ${{ steps.detect.outputs.mobileTestFiles }}
2123
2224 steps :
2325 - uses : actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
26+ with :
27+ ref : ${{ github.event.pull_request.head.sha }}
28+
2429
2530 - name : Detect changed files
2631 id : detect
3641 if : needs.detect-changes.outputs.backendChanged == 'true'
3742 runs-on : ubuntu-latest
3843
44+ outputs :
45+ lint_result : ${{ steps.backend_lint.outcome }}
46+ test_result : ${{ steps.backend_test.outcome }}
47+ typecheck_result : ${{ steps.backend_typecheck.outcome }}
48+
3949 steps :
4050 - uses : actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
51+ with :
52+ ref : ${{ github.event.pull_request.head.sha }}
4153
4254 - uses : actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e
4355 with :
@@ -49,23 +61,40 @@ jobs:
4961
5062 - name : Backend lint
5163 id : backend_lint
64+ continue-on-error : true
5265 run : cd apps/backend && pnpm eslint ${{ needs.detect-changes.outputs.backendFiles }}
5366
5467 - name : Backend test
5568 id : backend_test
56- run : cd apps/backend && pnpm test ${{ needs.detect-changes.outputs.backendFiles }}
69+ if : needs.detect-changes.outputs.backendTestFiles != ''
70+ continue-on-error : true
71+ run : cd apps/backend && pnpm test --passWithNoTests ${{ needs.detect-changes.outputs.backendTestFiles }}
5772
5873 - name : Backend typecheck
5974 id : backend_typecheck
60- run : cd apps/backend && pnpm typecheck ${{ needs.detect-changes.outputs.backendFiles }}
75+ continue-on-error : true
76+ run : cd apps/backend && pnpm typecheck
77+
78+ - name : Fail job if any check failed
79+ if : >
80+ steps.backend_lint.outcome == 'failure' ||
81+ steps.backend_test.outcome == 'failure' ||
82+ steps.backend_typecheck.outcome == 'failure'
83+ run : exit 1
6184
6285 web-ci :
6386 needs : detect-changes
6487 if : needs.detect-changes.outputs.webChanged == 'true'
6588 runs-on : ubuntu-latest
6689
90+ outputs :
91+ check_result : ${{ steps.web_check.outcome }}
92+ build_result : ${{ steps.web_build.outcome }}
93+
6794 steps :
6895 - uses : actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
96+ with :
97+ ref : ${{ github.event.pull_request.head.sha }}
6998
7099 - uses : actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e
71100 with :
@@ -77,19 +106,33 @@ jobs:
77106
78107 - name : Web check
79108 id : web_check
109+ continue-on-error : true
80110 run : cd apps/web && pnpm check
81111
82112 - name : Web build
83113 id : web_build
114+ continue-on-error : true
84115 run : cd apps/web && pnpm build
85116
117+ - name : Fail job if any check failed
118+ if : >
119+ steps.web_check.outcome == 'failure' ||
120+ steps.web_build.outcome == 'failure'
121+ run : exit 1
122+
86123 mobile-ci :
87124 needs : detect-changes
88125 if : needs.detect-changes.outputs.mobileChanged == 'true'
89126 runs-on : ubuntu-latest
90127
128+ outputs :
129+ lint_result : ${{ steps.mobile_lint.outcome }}
130+ test_result : ${{ steps.mobile_test.outcome }}
131+
91132 steps :
92133 - uses : actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
134+ with :
135+ ref : ${{ github.event.pull_request.head.sha }}
93136
94137 - uses : actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e
95138 with :
@@ -101,11 +144,20 @@ jobs:
101144
102145 - name : Mobile lint
103146 id : mobile_lint
147+ continue-on-error : true
104148 run : cd apps/mobile && pnpm eslint ${{ needs.detect-changes.outputs.mobileFiles }}
105149
106150 - name : Mobile test
107151 id : mobile_test
108- run : cd apps/mobile && pnpm test
152+ if : needs.detect-changes.outputs.mobileTestFiles != ''
153+ continue-on-error : true
154+ run : cd apps/mobile && pnpm test --passWithNoTests ${{ needs.detect-changes.outputs.mobileTestFiles }}
155+
156+ - name : Fail job if any check failed
157+ if : >
158+ steps.mobile_lint.outcome == 'failure' ||
159+ steps.mobile_test.outcome == 'failure'
160+ run : exit 1
109161
110162 comment-results :
111163 needs :
@@ -124,11 +176,17 @@ jobs:
124176 github-token : ${{ secrets.GITHUB_TOKEN }}
125177 script : |
126178 const script = require('./.github/scripts/commentResults.js');
127-
128179 await script({
129180 github,
130181 context,
131- backend: '${{ needs.backend-ci.result }}',
132- web: '${{ needs.web-ci.result }}',
133- mobile: '${{ needs.mobile-ci.result }}'
182+ backend: '${{ needs.backend-ci.result }}',
183+ web: '${{ needs.web-ci.result }}',
184+ mobile: '${{ needs.mobile-ci.result }}',
185+ backendLint: '${{ needs.backend-ci.outputs.lint_result }}',
186+ backendTest: '${{ needs.backend-ci.outputs.test_result }}',
187+ backendTypecheck: '${{ needs.backend-ci.outputs.typecheck_result }}',
188+ webCheck: '${{ needs.web-ci.outputs.check_result }}',
189+ webBuild: '${{ needs.web-ci.outputs.build_result }}',
190+ mobileLint: '${{ needs.mobile-ci.outputs.lint_result }}',
191+ mobileTest: '${{ needs.mobile-ci.outputs.test_result }}',
134192 });
0 commit comments