diff --git a/deploy.sh b/deploy.sh index b128c63..2876e2f 100644 --- a/deploy.sh +++ b/deploy.sh @@ -143,40 +143,23 @@ echo "" echo "11. Dernier commit:" ssh_exec "cd ${APP_DIR} && git log -1 --oneline" -# Copier next.config.js local vers le serveur (pour ignorer ESLint pendant le build) echo "" -echo "12. Mise à jour de next.config.js pour ignorer ESLint pendant le build..." -if [ -f "next.config.js" ]; then - cat next.config.js | ssh_exec "cat > ${APP_DIR}/next.config.js" - echo " ✓ next.config.js mis à jour" -else - echo " ⚠ next.config.js local non trouvé, utilisation de celui du serveur" -fi +echo "12. Installation des dépendances (reproductible via lockfile)..." +ssh_exec "cd ${APP_DIR} && npm ci" -# Mettre à jour les dépendances aux dernières versions echo "" -echo "13. Mise à jour des dépendances aux dernières versions..." -ssh_exec "cd ${APP_DIR} && npx -y npm-check-updates -u || true" - -# Installer les dépendances -echo "" -echo "14. Installation des dépendances..." -ssh_exec "cd ${APP_DIR} && npm install" - -# Construire l'application -echo "" -echo "15. Construction de l'application..." +echo "13. Construction de l'application..." ssh_exec "cd ${APP_DIR} && npm run build" # Redémarrer le service echo "" -echo "16. Redémarrage du service ${APP_NAME}..." +echo "14. Redémarrage du service ${APP_NAME}..." ssh_exec "sudo systemctl restart ${APP_NAME}" sleep 3 # Vérifier que le service fonctionne echo "" -echo "17. Vérification du service..." +echo "15. Vérification du service..." if ssh_exec "sudo systemctl is-active ${APP_NAME} >/dev/null"; then echo " ✓ Service actif" echo "" @@ -190,7 +173,7 @@ fi # Vérifier que le port est en écoute echo "" -echo "18. Vérification du port 3001..." +echo "16. Vérification du port 3001..." if ssh_exec "sudo ss -tuln | grep -q ':3001 '"; then echo " ✓ Port 3001 en écoute" else diff --git a/fixKnowledge/2026-01-13-deploy-sh-ncu-eresolve.md b/fixKnowledge/2026-01-13-deploy-sh-ncu-eresolve.md new file mode 100644 index 0000000..43df1f1 --- /dev/null +++ b/fixKnowledge/2026-01-13-deploy-sh-ncu-eresolve.md @@ -0,0 +1,35 @@ +## 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 de `package.json` **en 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 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 d’analyse + +- 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 ""` après commit/push des modifications du script.