**Motivations:** - Make deployments reproducible and prevent production-only dependency drift **Root causes:** - deploy.sh ran npm-check-updates -u on the server, then npm install hit ERESOLVE **Correctifs:** - Remove npm-check-updates step - Switch npm install to npm ci - Stop copying next.config.js over SSH (use Git version) **Evolutions:** - Add fixKnowledge note explaining the failure mode and remediation **Pages affectées:** - deploy.sh - fixKnowledge/2026-01-13-deploy-sh-ncu-eresolve.md
1.5 KiB
1.5 KiB
Contexte
Le script deploy.sh exécute un déploiement sur le serveur (pull Git, installation, build, restart).
Lors d’un déploiement, npm install échoue avec ERESOLVE après une mise à jour automatique des dépendances.
Impact
- Déploiement interrompu avant
npm run build - Service non redémarré, donc absence de mise en production effective
- Risque de dérive des versions en production (package.json modifié côté serveur, hors Git)
Root cause
deploy.sh exécutait sur le serveur :
npx npm-check-updates -u: modification depackage.jsonen production (hors contrôle Git)- puis
npm install: résolution de dépendances conflictuelles (ERESOLVE) car le lockfile n’est pas géré comme source de vérité et l’état du workspace serveur peut être incohérent.
Correctifs
- Suppression de l’upgrade automatique des dépendances (
npm-check-updates) pendant le déploiement. - Remplacement de
npm installparnpm cipour utiliser strictement le lockfile et garantir un déploiement reproductible. - Suppression de l’étape qui copiait
next.config.jsvia SSH (le fichier doit venir de Git viagit pull).
Pages affectées
deploy.sh
Modalités d’analyse
- Sur un déploiement en échec : rechercher
ERESOLVE could not resolvedans la sortienpm install. - Vérifier si
deploy.shmodifie des fichiers côté serveur aprèsgit pull(anti-pattern car divergence hors Git).
Modalités de déploiement
- Rejouer
./deploy.sh "<message>"après commit/push des modifications du script.