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 { sh ''' CONTAINERS=$(docker ps -a --filter "label=com.docker.compose.project=${COMPOSE_PROJECT}" -q || true) if [ -n "$CONTAINERS" ]; then docker rm -f $CONTAINERS fi echo "=== (Re)création de la stack MySQL + Spring + Angular ===" docker-compose up -d mysql spring angular ''' } } } }