diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 000000000..0e6395e79 --- /dev/null +++ b/Jenkinsfile @@ -0,0 +1,76 @@ +pipeline { + agent any + + tools { + jdk 'jdk17' + maven 'maven' + } + + environment { + SONAR_TOKEN = credentials('edf40d2f41d32dc9a7e0a42cb45aa683e645760c') + SONAR_HOST = 'http://localhost:9000' // SonarQube local + IMAGE = 'spring-petclinic' // Nom local de l'image Docker + TAG = 'latest' + } + + stages { + + stage('Checkout') { + steps { + git branch: 'main', url: 'https://github.com/zinebmouman/resevation_devices.git' + } + } + + stage('Build & Unit Tests') { + steps { + dir('backend') { + bat 'mvn -B -U clean verify' + } + } + post { + always { + junit allowEmptyResults: true, testResults: 'backend/target/surefire-reports/*.xml' + archiveArtifacts artifacts: 'backend/target/*.jar', fingerprint: true + } + } + } + + stage('SonarQube Analysis') { + steps { + dir('backend') { + bat """ + mvn sonar:sonar ^ + -Dsonar.projectKey=resevation_devices ^ + -Dsonar.host.url=%SONAR_HOST% ^ + -Dsonar.login=%SONAR_TOKEN% + """ + } + } + } + + stage('Build Docker locally') { + steps { + dir('backend') { + bat """ + docker build -t %IMAGE%:%TAG% . + """ + } + } + } + + stage('Run Docker locally') { + steps { + bat """ + docker stop %IMAGE% || exit 0 + docker rm %IMAGE% || exit 0 + docker run -d -p 8080:8080 --name %IMAGE% %IMAGE%:%TAG% + """ + } + } + } + + post { + success { echo "Pipeline OK → Docker local lancé : %IMAGE%:%TAG%" } + failure { echo "Pipeline KO" } + } +}