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 { // ... (autres stages inchangés) // stage('Docker Registry Login, Pull, and Push') { // when { // branch 'dev' // } // steps { // script { // def registryUrl = 'nexus.foodgame.fr:8123' // def imageName = 'quay.io/prometheus/node-exporter' // def imageVersion = 'latest' // docker.withRegistry("https://${registryUrl}", 'nexus') { // try { // // Try pulling the image from the registry // echo "Trying to pull image: ${registryUrl}/${imageName}:${imageVersion}" // docker.image("${registryUrl}/${imageName}:${imageVersion}").pull() // } catch (Exception e) { // echo "Image pull failed. Attempting to build and push." // // Pull base image from Docker Hub // echo "Pulling base image: ${imageName}:${imageVersion}" // sh "docker pull ${imageName}:${imageVersion}" // // Tag the image for the private registry // echo "Tagging image for private registry" // sh "docker tag ${imageName}:${imageVersion} ${registryUrl}/${imageName}:${imageVersion}" // // Push the tagged image to the private registry // echo "Pushing image to private registry" // sh "docker push ${registryUrl}/${imageName}:${imageVersion}" // } // } // } // } // } // 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 --no-cache docker-compose up -d --force-recreate ''' } } // ... (autres stages inchangés) } post { success { echo "Pipeline exécutée avec succès pour la branche ${env.BRANCH_NAME}." } failure { echo "Échec du pipeline pour la branche ${env.BRANCH_NAME}." } } } // 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('Docker Registry Login, Pull, and Push') { // when { // branch 'dev' // } // steps { // script { // def registryUrl = 'nexus.foodgame.fr:8123' // def imageName = 'grafana/tns-db' // def imageVersion = 'latest' // docker.withRegistry("https://${registryUrl}", 'nexus') { // try { // Try pulling the image from the registry // echo "Trying to pull image: ${registryUrl}/${imageName}:${imageVersion}" // docker.image("${registryUrl}/${imageName}:${imageVersion}").pull() // } catch (Exception e) { // echo "Image pull failed. Attempting to build and push." // Pull base image from Docker Hub // echo "Pulling base image: ${imageName}:${imageVersion}" // sh "docker pull ${imageName}:${imageVersion}" // Tag the image for the private registry // echo "Tagging image for private registry" // sh "docker tag ${imageName}:${imageVersion} ${registryUrl}/${imageName}:${imageVersion}" // Push the tagged image to the private registry // echo "Pushing image to private registry" // sh "docker push ${registryUrl}/${imageName}:${imageVersion}" // } // } // } // } // } // 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é!"' // // } // // }