ci(frontend) : accelere le job PR (nuxt build + cache node_modules & build Nuxt/Vite)
Pull Request — Quality gate / Backend (PHP CS + PHPUnit) (pull_request) Successful in 1m35s
Pull Request — Quality gate / Frontend (lint + Vitest + build) (pull_request) Successful in 11m44s

- 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:
Matthieu
2026-05-27 15:46:54 +02:00
parent d4f234ec55
commit f5312686ab
+36 -1
View File
@@ -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