pipeline {
    agent any
    tools {
        maven 'maven-3.9'
    }
    stages {
        stage('Compilation') {
            steps {
                echo "Compilation du projet..."
                sh 'mvn clean compile'
            }
        }
        stage('Tests') {
            steps {
                echo "Exécution des tests..."
                sh 'mvn test'
            }
            post {
                always {
                    // Publier les résultats de tests JUnit dans Jenkins
                    junit 'target/surefire-reports/*.xml'
                }
            }
        }
        stage('Packaging') {
            steps {
                echo "Packaging de l'application (sans exécuter les tests)..."
                sh 'mvn package -DskipTests'
            }
        }
        stage('Déploiement') {
            steps {
                sh '''
                  echo "=== Déploiement simple sur le port 8081 ==="

                  cd "$WORKSPACE"

                  # 1) Arrêter l'ancienne instance de CE jar (et pas tout java)
                  OLD_PIDS=$(pgrep -f "rock-paper-scissors-0.0.1-SNAPSHOT.jar" || true)
                  if [ -n "$OLD_PIDS" ]; then
                    echo "Arrêt des anciennes instances: $OLD_PIDS"
                    kill $OLD_PIDS || true
                    sleep 5
                  else
                    echo "Aucune ancienne instance à arrêter."
                  fi

                  # 2) Vérifier que le jar existe
                  JAR_FILE=target/rock-paper-scissors-0.0.1-SNAPSHOT.jar
                  if [ ! -f "$JAR_FILE" ]; then
                    echo "ERREUR : $JAR_FILE introuvable"
                    exit 1
                  fi
                  echo "Jar sélectionné : $JAR_FILE"

                  # 3) Démarrer en arrière-plan, en évitant que Jenkins tue le process
                  echo "Démarrage de l'application..."
                  JENKINS_NODE_COOKIE=dontKillMe nohup java -jar "$JAR_FILE" --server.port=8081 > app.log 2>&1 &

                  echo "Déploiement terminé (process lancé en arrière-plan)."
                '''
            }
        }
    }
}
