pipeline { agent any environment { NODEJS_HOME = "${tool 'NodeJS'}" PATH = "${env.NODEJS_HOME}/bin:${env.PATH}" DEV_URL = "dev.foodgame.fr" PREPROD_URL = "preprod.foodgame.fr" PROD_URL = "prod.foodgame.fr" } stages { stage('Setup Environment') { steps { script { echo "Environnement détecté : ${env.BRANCH_NAME}" if (env.BRANCH_NAME == 'test') { echo "Déploiement sur DEV (${DEV_URL})" } else if (env.BRANCH_NAME == 'dev') { echo "Déploiement sur PREPROD (${PREPROD_URL})" } else if (env.BRANCH_NAME == 'master') { echo "Déploiement sur PROD (${PROD_URL})" } else { error "Branche non prise en charge : ${env.BRANCH_NAME}" } } sh 'npm --version' } } stage('Checkout Code') { steps { deleteDir() checkout scm } } stage('SonarQube Analysis') { steps { script { def scannerHome = tool name: 'SonarQube Scanner', type: 'hudson.plugins.sonar.SonarRunnerInstallation'; withSonarQubeEnv('SonarQube') { // Nom du serveur SonarQube configuré dans Jenkins sh """ ${scannerHome}/bin/sonar-scanner \ -Dsonar.projectKey=FatboarProject-${env.BRANCH_NAME} \ -Dsonar.sources=. \ -Dsonar.host.url=https://sonarqube.foodgame.fr \ -Dsonar.login=sqa_d81445ef2d3961cddf7e29e31c1aeb2505aacdbd """ } } } } stage('Stop Containers') { steps { sh ''' docker ps | grep "workflow_" -v | awk -F " " '{ if(NR>1) print $1}' | xargs docker kill || true docker system prune -f ''' } } stage('Build & Deploy') { steps { sh ''' docker-compose stop docker-compose build docker-compose up -d ''' } } // stage('Push Docker Image (Nexus)') { // when { // branch 'master' // } // steps { // withDockerRegistry([credentialsId: 'nexus', url: 'https://nexus.foodgame.fr']) { // script { // def dockerImageName = 'workflow_jenkins_1' // def dockerImageTag = 'latest' // def nexusRepository = 'fatboar_repo' // sh """ // docker tag ${dockerImageName}:${dockerImageTag} ${nexusRepository}/${dockerImageName}:${dockerImageTag} // docker push ${nexusRepository}/${dockerImageName}:${dockerImageTag} // """ // } // } // } // } stage('Push Docker Image (Nexus)') { when { branch 'master' } steps { withDockerRegistry([credentialsId: 'nexus', url: 'https://nexus.foodgame.fr']) { script { def dockerImageName = 'fatboar_master_express_preprod ' def dockerImageTag = 'latest' def nexusRepository = 'nexus.foodgame.fr:8123' sh """ echo "Tagging Docker image..." docker tag ${dockerImageName}:${dockerImageTag} ${nexusRepository}/${dockerImageName}:${dockerImageTag} echo "Pushing to Nexus repository..." docker push ${nexusRepository}/${dockerImageName}:${dockerImageTag} echo "Cleaning up local images..." docker rmi ${nexusRepository}/${dockerImageName}:${dockerImageTag} || true """ } } } } stage('Cleanup') { steps { echo "Nettoyage terminé pour la branche ${env.BRANCH_NAME}" } } stage('Fin du Pipeline') { steps { sh 'echo "Félicitations, le pipeline s\'est terminé avec succès !"' } } } post { success { echo "Pipeline exécuté avec succès pour la branche ${env.BRANCH_NAME}." } failure { echo "Échec du pipeline pour la branche ${env.BRANCH_NAME}." } } } // node{ // env.NODEJS_HOME = "${tool 'NodeJS'}" // // on linux / mac // env.PATH="${env.NODEJS_HOME}/bin:${env.PATH}" // // on windows // //env.PATH="${env.NODEJS_HOME};${env.PATH}" // sh 'npm --version' // stage('checkout') // { // deleteDir() // checkout scm // } // stage('Stop Containers') // { // sh 'docker ps | grep "workflow_" -v | awk -F " " \'{ if(NR>1) print $1}\' |xargs docker kill |xargs docker rm || true' // sh 'docker system prune -f' // } // // stage("Push preprod images to nexus") // // { // // docker.withRegistry('http://localhost:8083','885ef60c-9352-489a-bd1c-e4b695747c21') // // { // // imageApache.push('latest') // // imageExpress.push('latest') // // }*/ // // } // // stage('SonarQube analysis') // // { // // def scannerHome = tool name: 'SonarQube Scanner', type: 'hudson.plugins.sonar.SonarRunnerInstallation'; // // withSonarQubeEnv('SonarQube') // // { // // // If you have configured more than one global server connection, you can specify its name // // sh "${scannerHome}/bin/sonar-scanner \ // // -Dsonar.projectKey=FatboarProject \ // // -Dsonar.sources=. \ // // -Dsonar.host.url=https://sonarqube.foodgame.fr \ // // -Dsonar.login=sqp_09ee9072c917af8212864baf0f75c950afc14c64" // // } // // } // stage('Build Docker MEAN Stack(Test Deployment)') // { // sh 'docker-compose -v' // sh 'docker-compose build' // sh 'docker-compose up -d' // } // stage('Fin du Pipeline') // { // sh 'echo "Félicitation tout c\'est bien déroulé!"' // } // }