XYLO IMPACT Module · Déploiement
Publier un logiciel

Déployer avec l'IA

Ne code pas le script à la main. Copie le prompt ci-dessous et donne-le à ton assistant IA (dans ton projet) : il générera un DEPLOY.SH sur-mesure qui publie ton application sur ewann-res.codesinn.com, au bon endroit, en installant PM2 & co. automatiquement si besoin.

Cible (auto)
ewann-res.codesinn.com
Serveur
ewann@141.95.112.90
Auth
Clé SSH

📋 Prompt à donner à l'IA

    PROMPT — génération de DEPLOY.SH
Tu es un assistant DevOps. Écris un script DEPLOY.SH (bash) à placer à la racine de CE projet. Objectif : publier cette application sur la plateforme XYLO, en une seule commande, à l'adresse https://ewann-res.codesinn.com

CONTEXTE SERVEUR (déjà configuré — NE PAS le reconfigurer) :
- Accès SSH : ewann@141.95.112.90 (authentification par clé SSH ; l'opérateur a déjà sa clé installée). Le compte ewann possède les droits sudo.
- Le domaine https://ewann-res.codesinn.com est déjà servi par nginx, de deux façons :
  - Fichiers STATIQUES servis depuis le dossier serveur : /var/www/ewann-res.codesinn.com/html/
  - Si aucun fichier statique ne correspond, nginx fait un reverse-proxy vers une app Node locale sur le port 3001.
- Node.js 20, npm et PM2 sont installés (PM2 est déjà configuré pour redémarrer au boot sous le compte ewann). Nom de process PM2 à utiliser : xylo-res.

CE QUE DOIT FAIRE DEPLOY.SH :
1. Détecter le type de l'application présente dans le projet :
   - STATIQUE (site HTML/CSS/JS, ou build d'une SPA React/Vue/Svelte/etc.) : lancer le build si nécessaire (par ex. npm ci puis npm run build), puis copier le résultat (dist/ ou build/ ou la racine) vers /var/www/ewann-res.codesinn.com/html/ sur le serveur via rsync au-dessus de ssh, en remplaçant proprement le contenu précédent (rsync --delete).
   - NODE (serveur Node/Express/Fastify/Next en mode serveur…) : transférer le code sur le serveur (rsync, en excluant node_modules et .git), installer les dépendances de production, puis démarrer ou redémarrer l'app avec PM2 sous le nom xylo-res, en la faisant écouter sur le port fourni par la variable d'environnement PORT (valeur 3001). Faire ensuite pm2 save. Vider le webroot statique pour que nginx bascule sur le reverse-proxy.
2. Être lançable en une seule commande depuis la machine du développeur (le script se connecte lui-même au serveur en ssh/rsync). Utiliser set -euo pipefail, afficher des étapes claires, et se terminer en affichant l'URL finale https://ewann-res.codesinn.com
3. Être idempotent : relançable autant de fois que voulu sans rien casser.
4. Peut installer automatiquement un outil manquant SUR LE SERVEUR via sudo apt (par ex. rsync) ou npm i -g (par ex. pm2) UNIQUEMENT si nécessaire — uniquement des ajouts, jamais de suppression.

CONTRAINTE ABSOLUE D'ISOLATION (ne jamais enfreindre) :
- Publier UNIQUEMENT dans /var/www/ewann-res.codesinn.com/ et/ou via le process PM2 nommé xylo-res (port 3001).
- NE JAMAIS modifier le site de test /var/www/ewann.codesinn.com/ (page d'accueil, /camera, /ssh, /deploy), ni sa configuration nginx, ni le tunnel WireGuard, ni la configuration SSH ou le pare-feu. Le déploiement ne doit EN AUCUN CAS pouvoir casser ces éléments de test.

Rends uniquement le contenu complet du fichier DEPLOY.SH, prêt à l'emploi, avec des commentaires clairs.
Isolation garantie côté plateforme. Le webroot, la config nginx et le process de ewann-res sont séparés du site de test. La contrainte est aussi écrite dans le prompt → l'IA ne publie que sur ewann-res, jamais sur les tests.
Prérequis. La machine qui lance DEPLOY.SH doit avoir la clé SSH de ewann. Vérifie que le DNS ewann-res.codesinn.com pointe sur le serveur (HTTPS) avant la première publication.