Pipeline Devops
Pipeline Devops
agent any
environment {
DOCKERHUB_CREDENTIALS = credentials('dockerhub')
}
stages {
stage('GIT Pull') {
steps {
echo 'Pulling from Git ...'
// Utilisation de la branche 'houssem' depuis le référentiel Git
avec les informations d'identification 'accessGIT'
git branch: 'houssem', credentialsId: 'accessGIT', url:
'https://github.com/Housseem-Kouki/DevopsProject.git'
}
}
stage('Test - JUNIT/MOCKITO') {
steps {
echo 'Testing Spring project...'
dir('DevOps_Project') {
sh'docker start c36e35dd9cb9_mysqldata'
sh 'mvn test'
}
}
}
stage('JaCoCo Report') {
steps {
echo 'Generating JaCoCo Coverage Report...'
dir('DevOps_Project') {
// Génération du rapport de couverture JaCoCo
sh 'mvn jacoco:report'
}
}
}
stage('SonarQube Analysis') {
steps {
echo 'Sonarqube analysis'
dir('DevOps_Project') {
sh 'mvn sonar:sonar -Dsonar.login=admin -
Dsonar.password=sonar'
}
}
}
stage('Deploy to Nexus') {
steps {
echo 'Deploying to Nexus'
dir('DevOps_Project') {
// Déploiement vers le référentiel Nexus avec sa configuration
sh 'mvn deploy -DskipTests -DrepositoryId=deploymentRepo -e -X'
}
}
}
stage('Docker Compose') {
steps {
dir('DevOps_Project') {
sh 'docker compose up -d'
sh 'docker compose ps'
}
}
}
stage('Email') {
steps {
script {
def emailBody = ""
// GIT Pull
emailBody += "Stage: GIT Pull\n"
emailBody += " - Pulling from Git...\n\n"
// Test - JUNIT/MOCKITO
emailBody += "Stage: Test - JUNIT/MOCKITO\n"
emailBody += " - Testing Spring project...\n\n"
// JaCoCo Report
emailBody += "Stage: JaCoCo Report\n"
emailBody += " - Generating JaCoCo Coverage Report...\n\n"
// SonarQube Analysis
emailBody += "Stage: SonarQube Analysis\n"
emailBody += " - Running Sonarqube analysis...\n\n"
// Deploy to Nexus
emailBody += "Stage: Deploy to Nexus\n"
emailBody += " - Deploying to Nexus...\n\n"
// Docker Compose
emailBody += "Stage: Docker Compose\n"
emailBody += " - Running Docker Compose...\n\n"
// Email Notification
if (currentBuild.result == 'FAILURE') {
emailBody += "Final Report: The pipeline has failed. Please check
the logs and reports for more details.\n"
} else {
emailBody += "Final Report: The pipeline has completed
successfully. No action required.\n"
}
mail(
body: emailBody,
subject: currentBuild.result == 'FAILURE' ? "❌ Échec de la pipeline
DevOps Project" : "✅ Succès de la pipeline DevOps Project",
to: "[email protected]"
)
}
}
}
//fermeture stages
}
//post