pipeline { agent any tools { nodejs 'NodeJS 20' } environment { FRONT_DEST = '/var/www/xeewy.be' BACK_DEST = '/var/www/xeewy/backend' SERVICE_NAME = 'xeewy-backend' } stages { // --- FRONTEND (Pas de changement ici, ça marche déjà) --- stage('Build Frontend') { steps { echo '--- Building React Frontend ---' dir('frontend') { sh 'npm install' sh 'npm run build' } } } stage('Deploy Frontend') { steps { echo '--- Deploying Frontend ---' sh "rm -rf ${FRONT_DEST}/*" sh "cp -r frontend/dist/* ${FRONT_DEST}/" } } // --- BACKEND (C'est ici qu'on change tout) --- stage('Build Backend') { steps { echo '--- Building TypeScript Backend ---' dir('backend') { // 1. On installe TOUT (y compris TypeScript pour pouvoir compiler) sh 'npm install' // 2. On compile le TS en JS (crée un dossier dist/) sh 'npm run build' } } } stage('Deploy Backend') { steps { echo '--- Deploying Backend Code ---' // On copie le résultat du build (dist) + package.json pour la prod // On vide le dossier distant avant pour être propre sh "rm -rf ${BACK_DEST}/*" sh "cp backend/package.json ${BACK_DEST}/" sh "cp backend/package-lock.json ${BACK_DEST}/" sh "cp -r backend/dist ${BACK_DEST}/" // Note: Si votre build crée un dossier 'build' au lieu de 'dist', changez la ligne ci-dessus // On installe seulement les dépendances de prod sur le serveur sh "cd ${BACK_DEST} && npm install --production" } } stage('Restart Service') { steps { echo '--- Restarting Service ---' sh "sudo systemctl restart ${SERVICE_NAME}" } } } }