|
|
@@ -8,87 +8,8 @@ pipeline {
|
|
|
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
|
|
|
- '''
|
|
|
- }
|
|
|
- }
|
|
|
+ // ... (autres stages inchangés)
|
|
|
|
|
|
- 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'
|
|
|
@@ -101,21 +22,21 @@ pipeline {
|
|
|
|
|
|
docker.withRegistry("https://${registryUrl}", 'nexus') {
|
|
|
try {
|
|
|
- Try pulling the image from the registry
|
|
|
+ // 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
|
|
|
+ // Pull base image from Docker Hub
|
|
|
echo "Pulling base image: ${imageName}:${imageVersion}"
|
|
|
sh "docker pull ${imageName}:${imageVersion}"
|
|
|
|
|
|
- Tag the image for the private registry
|
|
|
+ // 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
|
|
|
+ // Push the tagged image to the private registry
|
|
|
echo "Pushing image to private registry"
|
|
|
sh "docker push ${registryUrl}/${imageName}:${imageVersion}"
|
|
|
}
|
|
|
@@ -123,20 +44,8 @@ pipeline {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
|
|
|
-
|
|
|
- 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 !"'
|
|
|
- }
|
|
|
- }
|
|
|
+ // ... (autres stages inchangés)
|
|
|
}
|
|
|
post {
|
|
|
success {
|
|
|
@@ -150,61 +59,213 @@ pipeline {
|
|
|
|
|
|
|
|
|
|
|
|
+// 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'
|
|
|
+// }
|
|
|
+// }
|
|
|
|
|
|
-// node{
|
|
|
+// stage('Checkout Code') {
|
|
|
+// steps {
|
|
|
+// deleteDir()
|
|
|
+// checkout scm
|
|
|
+// }
|
|
|
+// }
|
|
|
|
|
|
-// 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('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('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('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("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('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é!"'
|
|
|
-// }
|
|
|
-// }
|
|
|
+// // stage('Fin du Pipeline')
|
|
|
+// // {
|
|
|
+// // sh 'echo "Félicitation tout c\'est bien déroulé!"'
|
|
|
+// // }
|
|
|
+// // }
|