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('Build and Push Docker Image') { // Définition des variables def dockerImageName = 'workflow_jenkins_1' def dockerImageTag = 'latest' def nexusUrl = 'https://nexus.foodgame.fr' def nexusRepository = 'fatboar_repo' def nexusUsername = 'admin' def nexusPassword = 'azerty10' // Étape de connexion au registre Docker Nexus sh "docker login -u ${nexusUsername} -p ${nexusPassword} ${nexusUrl}" // Étape de balisage de l'image Docker pour le registre Nexus sh "docker tag ${dockerImageName}:${dockerImageTag} ${nexusUrl}/repository/${nexusRepository}/${dockerImageName}:${dockerImageTag}" // Étape de poussée de l'image Docker vers le registre Nexus sh "docker push ${nexusUrl}/repository/${nexusRepository}/${dockerImageName}:${dockerImageTag}" } stage('Build Docker MEAN Stack(PreProduction Deployment)') { sh 'docker-compose -v' sh 'docker-compose stop' sh 'docker-compose build' sh 'docker-compose up -d' } stage('Fin du Pipeline') { sh 'echo "Félicitation tout s\'est bien déroulé!"' } }