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') // } // } node { stage('Push Docker images to Nexus') { environment { NEXUS_URL = 'https://nexus.foodgame.fr' NEXUS_CREDENTIAL_ID = 'nexus' NEXUS_USERNAME = 'admin' NEXUS_PASSWORD = 'azerty10' DOCKER_IMAGE_NAME = 'workflow_jenkins_1' DOCKER_IMAGE_TAG = 'latest' } steps { script { withCredentials([usernamePassword(credentialsId: NEXUS_CREDENTIAL_ID, usernameVariable: 'NEXUS_USERNAME', passwordVariable: 'NEXUS_PASSWORD')]) { def dockerImage = "${DOCKER_IMAGE_NAME}:${DOCKER_IMAGE_TAG}" def dockerRegistryUrl = "${NEXUS_URL}/repository/${DOCKER_IMAGE_NAME}/" // Build Docker image sh "docker build -t ${dockerImage} ." // Tag Docker image for Nexus repository sh "docker tag ${dockerImage} ${dockerRegistryUrl}${dockerImage}" // Login to Nexus Docker registry sh "docker login -u ${NEXUS_USERNAME} -p ${NEXUS_PASSWORD} ${NEXUS_URL}" // Push Docker image to Nexus repository sh "docker push ${dockerRegistryUrl}${dockerImage}" } } } } } 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é!"' } }