@@ -20,11 +20,9 @@ permissions:
2020
2121jobs :
2222 setup :
23- name : ' Setup / Install + Build + Generate '
23+ name : ' Build + Check '
2424 runs-on : ubuntu-latest
2525 timeout-minutes : 15
26- outputs :
27- cache-key : ${{ steps.cache-key.outputs.value }}
2826 steps :
2927 - name : Checkout code
3028 uses : actions/checkout@v4
@@ -65,15 +63,16 @@ jobs:
6563 resources/js/generated
6664 key : ${{ steps.cache-key.outputs.value }}
6765
68- - name : Install Composer dependencies
69- if : steps.cache.outputs.cache-hit != 'true'
70- run : composer install --no-interaction --no-progress
66+ - parallel :
67+ - name : Install Composer dependencies
68+ if : steps.cache.outputs.cache-hit != 'true'
69+ run : composer install --no-interaction --no-progress
7170
72- - name : Install frontend dependencies
73- if : steps.cache.outputs.cache-hit != 'true'
74- run : vp install --frozen-lockfile
75- env :
76- CRAFT_FONTAWESOME_TOKEN : ${{ secrets.CRAFT_FONTAWESOME_TOKEN }}
71+ - name : Install frontend dependencies
72+ if : steps.cache.outputs.cache-hit != 'true'
73+ run : vp install --frozen-lockfile
74+ env :
75+ CRAFT_FONTAWESOME_TOKEN : ${{ secrets.CRAFT_FONTAWESOME_TOKEN }}
7776
7877 # Build the garnish package so its `dist/*.d.ts` exist — `vue-tsc` resolves
7978 # `@craftcms/garnish` from `dist` (its `types`), and dist is gitignored.
@@ -101,108 +100,18 @@ jobs:
101100 if : steps.cache.outputs.cache-hit != 'true'
102101 run : vp run generate:wayfinder
103102
104- eslint :
105- name : ' Code Quality / Oxlint'
106- runs-on : ubuntu-latest
107- timeout-minutes : 5
108- needs : setup
109- steps :
110- - name : Checkout code
111- uses : actions/checkout@v4
112-
113- - name : Setup Vite+
114- uses : voidzero-dev/setup-vp@v1
115- with :
116- node-version : ${{ env.NODE_VERSION }}
117- cache : true
118-
119- - name : Restore install + build + generated cache
120- uses : actions/cache@v4
121- with :
122- path : |
123- node_modules
124- packages/*/node_modules
125- packages/craftcms-ui/dist
126- packages/craftcms-garnish/dist
127- vendor
128- resources/js/actions
129- resources/js/routes
130- resources/js/wayfinder
131- resources/js/generated
132- key : ${{ needs.setup.outputs.cache-key }}
133-
134- - name : Run Oxlint
135- run : vp lint resources/js/
136-
137- typecheck :
138- name : ' Code Quality / TypeScript'
139- runs-on : ubuntu-latest
140- timeout-minutes : 5
141- needs : setup
142- steps :
143- - name : Checkout code
144- uses : actions/checkout@v4
145-
146- - name : Setup Vite+
147- uses : voidzero-dev/setup-vp@v1
148- with :
149- node-version : ${{ env.NODE_VERSION }}
150- cache : true
151-
152- - name : Restore install + build + generated cache
153- uses : actions/cache@v4
154- with :
155- path : |
156- node_modules
157- packages/*/node_modules
158- packages/craftcms-ui/dist
159- packages/craftcms-garnish/dist
160- vendor
161- resources/js/actions
162- resources/js/routes
163- resources/js/wayfinder
164- resources/js/generated
165- key : ${{ needs.setup.outputs.cache-key }}
166-
167- # Skip the `pretypecheck` hook (it would re-run generate:types +
168- # generate:wayfinder, which need PHP/Composer that this job doesn't set
169- # up — the setup job already produced and cached the output).
170- - name : Run TypeScript type check
171- run : vp run typecheck
172-
173- test-ui :
174- name : ' Tests / @craftcms/ui'
175- runs-on : ubuntu-latest
176- timeout-minutes : 10
177- needs : setup
178- steps :
179- - name : Checkout code
180- uses : actions/checkout@v4
181-
182- - name : Setup Vite+
183- uses : voidzero-dev/setup-vp@v1
184- with :
185- node-version : ${{ env.NODE_VERSION }}
186- cache : true
187-
188- - name : Restore install + build + generated cache
189- uses : actions/cache@v4
190- with :
191- path : |
192- node_modules
193- packages/*/node_modules
194- packages/craftcms-ui/dist
195- packages/craftcms-garnish/dist
196- vendor
197- resources/js/actions
198- resources/js/routes
199- resources/js/wayfinder
200- resources/js/generated
201- key : ${{ needs.setup.outputs.cache-key }}
202-
103+ # `vp run` skips the npm pretypecheck hook, which would redundantly run
104+ # generate:types and generate:wayfinder.
203105 # The storybook tests run in real Chromium via @vitest/browser-playwright.
204106 - name : Install Playwright Chromium
205107 run : vp exec playwright install --with-deps chromium
206108
207- - name : Run @craftcms/ui tests
208- run : vp run test:ui
109+ - parallel :
110+ - name : Run Oxlint
111+ run : vp lint resources/js/
112+
113+ - name : Run TypeScript type check
114+ run : vp run typecheck
115+
116+ - name : Run @craftcms/ui tests
117+ run : vp run test:ui
0 commit comments