Compare commits
9 Commits
fc4e843ed3
...
4a6d224dbd
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4a6d224dbd | ||
|
|
7e2672c262 | ||
|
|
5dec349259 | ||
|
|
cbbfe40d1b | ||
|
|
e39d496ce2 | ||
|
|
25589ddff9 | ||
|
|
35f11521f7 | ||
|
|
9896dfdcec | ||
|
|
539b0ad314 |
68
Jenkinsfile
vendored
Normal file
68
Jenkinsfile
vendored
Normal file
@@ -0,0 +1,68 @@
|
|||||||
|
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 (Rien ne change ici) ---
|
||||||
|
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) ---
|
||||||
|
stage('Build Backend') {
|
||||||
|
steps {
|
||||||
|
echo '--- Building TypeScript Backend ---'
|
||||||
|
dir('backend') {
|
||||||
|
sh 'npm install'
|
||||||
|
sh 'npm run build' // Compile le TS vers JS (dossier dist/)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
stage('Deploy Backend') {
|
||||||
|
steps {
|
||||||
|
echo '--- Deploying Backend ---'
|
||||||
|
// On copie le dossier compilé (dist) vers le serveur
|
||||||
|
sh "rm -rf ${BACK_DEST}/*"
|
||||||
|
sh "cp backend/package.json ${BACK_DEST}/"
|
||||||
|
sh "cp backend/package-lock.json ${BACK_DEST}/"
|
||||||
|
|
||||||
|
// Copie du dossier dist (le résultat de la compilation)
|
||||||
|
sh "cp -r backend/dist ${BACK_DEST}/"
|
||||||
|
|
||||||
|
// Installation des dépendances de prod uniquement
|
||||||
|
sh "cd ${BACK_DEST} && npm install --production"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
stage('Restart Service') {
|
||||||
|
steps {
|
||||||
|
echo '--- Restarting Service ---'
|
||||||
|
sh "sudo systemctl restart ${SERVICE_NAME}"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -60,9 +60,8 @@ function AppContent() {
|
|||||||
<main style={{ flex: 1 }}>
|
<main style={{ flex: 1 }}>
|
||||||
<Routes>
|
<Routes>
|
||||||
<Route path="/" element={<Home />} />
|
<Route path="/" element={<Home />} />
|
||||||
<Route path="/travelmate" element={<TravelMate />} >
|
<Route path="/travelmate" element={<TravelMate />} />
|
||||||
<Route path="policies" element={<Policies />} />
|
<Route path="/travelmate/policies" element={<Policies />} />
|
||||||
</Route>
|
|
||||||
<Route path="/travelmate/erasedata" element={<EraseData />} />
|
<Route path="/travelmate/erasedata" element={<EraseData />} />
|
||||||
<Route path="/policies" element={<Policies />} />
|
<Route path="/policies" element={<Policies />} />
|
||||||
</Routes>
|
</Routes>
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import { useEffect } from 'react';
|
import { useEffect } from 'react';
|
||||||
import { motion } from 'framer-motion';
|
import { motion } from 'framer-motion';
|
||||||
import { useLanguage } from '../contexts/LanguageContext';
|
import { useLanguage } from '../contexts/LanguageContext';
|
||||||
import { Link, Outlet } from 'react-router-dom';
|
import { Link } from 'react-router-dom';
|
||||||
import { Shield, Smartphone, Map, DollarSign, Users, Globe, Code } from 'lucide-react';
|
import { Shield, Smartphone, Map, DollarSign, Users, Globe, Code } from 'lucide-react';
|
||||||
import appIcon from '../assets/app_icon.png';
|
import appIcon from '../assets/app_icon.png';
|
||||||
|
|
||||||
@@ -280,7 +280,7 @@ const TravelMate = () => {
|
|||||||
</motion.div>
|
</motion.div>
|
||||||
</motion.div>
|
</motion.div>
|
||||||
|
|
||||||
<Outlet />
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ const EraseData = () => {
|
|||||||
try {
|
try {
|
||||||
// Using absolute URL for localhost dev, in prod simple /api might work if proxied or configured
|
// Using absolute URL for localhost dev, in prod simple /api might work if proxied or configured
|
||||||
// Assuming localhost:3000 for backend based on previous steps
|
// Assuming localhost:3000 for backend based on previous steps
|
||||||
await axios.post('http://localhost:3000/api/messages', {
|
await axios.post('/api/messages', {
|
||||||
nom: formData.nom,
|
nom: formData.nom,
|
||||||
prenom: formData.prenom,
|
prenom: formData.prenom,
|
||||||
email: formData.email,
|
email: formData.email,
|
||||||
|
|||||||
58
jenkinsfile
58
jenkinsfile
@@ -1,58 +0,0 @@
|
|||||||
pipeline {
|
|
||||||
agent any
|
|
||||||
|
|
||||||
// Assurez-vous d'avoir configuré l'outil "NodeJS 20" dans Jenkins (Global Tool Configuration)
|
|
||||||
tools {
|
|
||||||
nodejs 'NodeJS 20'
|
|
||||||
}
|
|
||||||
|
|
||||||
environment {
|
|
||||||
// Variables pour éviter de répéter les chemins
|
|
||||||
FRONT_DEST = '/var/www/xeewy.be'
|
|
||||||
BACK_DEST = '/var/www/xeewy/backend'
|
|
||||||
SERVICE_NAME = 'xeewy-backend'
|
|
||||||
}
|
|
||||||
|
|
||||||
stages {
|
|
||||||
stage('Build Frontend') {
|
|
||||||
steps {
|
|
||||||
echo '--- Building React Frontend ---'
|
|
||||||
dir('frontend') {
|
|
||||||
sh 'npm install'
|
|
||||||
sh 'npm run build'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
stage('Deploy Frontend') {
|
|
||||||
steps {
|
|
||||||
echo '--- Deploying Frontend to Apache folder ---'
|
|
||||||
// On vide le dossier cible (sauf s'il est vide) et on copie le build
|
|
||||||
// Note : Adaptez 'build' en 'dist' si vous utilisez ViteJS
|
|
||||||
sh "rm -rf ${FRONT_DEST}/*"
|
|
||||||
sh "cp -r frontend/build/* ${FRONT_DEST}/"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
stage('Deploy Backend') {
|
|
||||||
steps {
|
|
||||||
echo '--- Deploying Backend Code ---'
|
|
||||||
// On copie le code backend vers sa destination
|
|
||||||
// On exclut node_modules pour éviter de copier des milliers de fichiers inutilement
|
|
||||||
sh "rsync -av --exclude='node_modules' backend/ ${BACK_DEST}/"
|
|
||||||
|
|
||||||
dir("${BACK_DEST}") {
|
|
||||||
sh 'npm install --production'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
stage('Restart Service') {
|
|
||||||
steps {
|
|
||||||
echo '--- Restarting Node.js Service ---'
|
|
||||||
// Nécessite la règle sudo NOPASSWD configurée précédemment
|
|
||||||
sh "sudo systemctl restart ${SERVICE_NAME}"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user