pipeline { agent any tools { maven 'mvn' nodejs 'npm' } environment { JAVA_HOME = '/opt/java/openjdk' PATH = "${JAVA_HOME}/bin:${env.PATH}" SPRING_IMAGE_NAME = 'spring-jenkins' ANGULAR_IMAGE_NAME = 'angular-jenkins' IMAGE_TAG = 'latest' COMPOSE_PROJECT = 'gameovergne-app' } stages { stage('Checkout sur la branche dev') { steps { git branch: 'dev', url: 'https://gitea.vincent-guillet.fr/vincentguillet/gameovergne-app.git' } } stage('Maven Build') { steps { dir('api') { sh 'mvn clean package -DskipTests' } } } stage('Angular Build') { steps { dir('client') { sh 'npm install' sh 'npm run build' } } } stage('Spring Docker Build') { steps { sh 'docker build -t registry.vincent-guillet.fr/gameovergne-api:dev-latest ./api' } } stage('Angular Docker Build') { steps { sh 'docker build -t registry.vincent-guillet.fr/gameovergne-client:dev-latest ./client' } } stage('Deployment') { steps { withEnv([ "DOCKER_HOST=unix:///var/run/docker.sock", "COMPOSE_PROJECT_NAME=${env.COMPOSE_PROJECT}" ]) { sh ''' echo "=== Nettoyage des anciens conteneurs nommés ===" docker rm -f gameovergne-api gameovergne-client 2>/dev/null || true echo "=== docker-compose down sur le projet courant ===" docker-compose down -v || true echo "=== (Re)création de la stack MySQL + Spring + Angular ===" docker-compose up -d mysql spring angular ''' } } } } }