story-research-zapwall/fixKnowledge/2026-01-13-deploy-sh-ncu-eresolve.md
Nicolas Cantu 398e0dd1de Fix deploy.sh to avoid dependency upgrades in production
**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
2026-01-13 17:29:53 +01:00

36 lines
1.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## Contexte
Le script `deploy.sh` exécute un déploiement sur le serveur (pull Git, installation, build, restart).
Lors dun 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 de `package.json` **en production** (hors contrôle Git)
- puis `npm install` : résolution de dépendances conflictuelles (`ERESOLVE`) car le lockfile nest pas géré comme source de vérité et létat du workspace serveur peut être incohérent.
## Correctifs
- Suppression de lupgrade automatique des dépendances (`npm-check-updates`) pendant le déploiement.
- Remplacement de `npm install` par `npm ci` pour utiliser strictement le lockfile et garantir un déploiement reproductible.
- Suppression de létape qui copiait `next.config.js` via SSH (le fichier doit venir de Git via `git pull`).
## Pages affectées
- `deploy.sh`
## Modalités danalyse
- Sur un déploiement en échec : rechercher `ERESOLVE could not resolve` dans la sortie `npm install`.
- Vérifier si `deploy.sh` modifie des fichiers côté serveur après `git pull` (anti-pattern car divergence hors Git).
## Modalités de déploiement
- Rejouer `./deploy.sh "<message>"` après commit/push des modifications du script.