Files
xeewy.be/Jenkinsfile

71 lines
2.2 KiB
Groovy

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}"
}
}
}
}