ci(frontend) : accelere le job PR (nuxt build + cache node_modules & build Nuxt/Vite)
- remplace build:dist (nuxt generate + prerender inutile en SPA) par nuxt build - cache node_modules sur hash du lockfile, npm ci uniquement en cache miss - regenere les types Nuxt (postinstall) en cache hit - cache des artefacts .nuxt / Vite avec restore-keys pour eviter le build a froid
This commit is contained in:
@@ -106,14 +106,49 @@ jobs:
|
||||
cache: npm
|
||||
cache-dependency-path: frontend/package-lock.json
|
||||
|
||||
# Cache de node_modules entier (pas seulement le cache de download npm).
|
||||
# Cle = hash du lockfile : tant qu'il ne bouge pas, on saute l'extraction
|
||||
# des ~1300 paquets (369 Mo) et le postinstall.
|
||||
- name: Cache node_modules
|
||||
id: node-modules-cache
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: frontend/node_modules
|
||||
key: node-modules-${{ hashFiles('frontend/package-lock.json') }}
|
||||
|
||||
# npm ci uniquement en cache miss (il efface node_modules de toute facon).
|
||||
- name: Install Node dependencies
|
||||
if: steps.node-modules-cache.outputs.cache-hit != 'true'
|
||||
run: npm ci
|
||||
|
||||
# En cache hit, node_modules est restaure tel quel : le postinstall
|
||||
# (nuxt prepare) n'a pas tourne. On regenere les types .nuxt a la main
|
||||
# pour que lint/vitest/build disposent du contexte Nuxt.
|
||||
- name: Prepare Nuxt (cache hit)
|
||||
if: steps.node-modules-cache.outputs.cache-hit == 'true'
|
||||
run: npm run postinstall
|
||||
|
||||
# Cache des artefacts de build Nuxt/Vite pour eviter un build a froid a
|
||||
# chaque PR. Cle par commit + restore-keys pour repartir du build le plus
|
||||
# recent ; Vite invalide ses entrees obsoletes par hash de contenu.
|
||||
- name: Cache Nuxt/Vite build
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: |
|
||||
frontend/.nuxt
|
||||
frontend/node_modules/.cache
|
||||
key: nuxt-build-${{ github.sha }}
|
||||
restore-keys: |
|
||||
nuxt-build-
|
||||
|
||||
- name: ESLint
|
||||
run: npm run lint
|
||||
|
||||
- name: Unit tests (Vitest)
|
||||
run: npm run test
|
||||
|
||||
# `nuxt build` (et non `build:dist`/`nuxt generate`) : l'app est en SSR off
|
||||
# (SPA), le prerender de generate n'apporte rien a une quality gate — on
|
||||
# veut seulement valider que le bundle compile.
|
||||
- name: Build production (nuxt build)
|
||||
run: npm run build:dist
|
||||
run: npm run build
|
||||
|
||||
Reference in New Issue
Block a user