def pipelineContext = [:] pipeline { agent any options { skipDefaultCheckout(true) } stages { stage('Checkout') { steps { checkout scm } } stage('Build API') { steps { script { pipelineContext.apiImage = docker.build("open-dmp-api:${env.BUILD_ID}", "-f dmp-backend/Dockerfile.CI dmp-backend/") } } } stage('Build WebApp') { steps { script { pipelineContext.webappImage = docker.build("open-dmp-webapp:${env.BUILD_ID}", "-f dmp-frontend/Dockerfile.CI dmp-frontend/") } } } stage('SonarQube analysis') { steps { script { def scannerHome = tool 'SonarQube Scanner 4.3'; withSonarQubeEnv('SonarQube') { // If you have configured more than one global server connection, you can specify its name sh "${scannerHome}/bin/sonar-scanner" } } } } // waiting for sonar results based into the configured web hook in Sonar server which push the status back to jenkins stage('SonarQube scan result check') { steps { timeout(time: 2, unit: 'MINUTES') { retry(3) { script { def qg = waitForQualityGate() if (qg.status != 'OK') { error "Pipeline aborted due to quality gate failure: ${qg.status}" } } } } } } stage('Pushing to Docker Registry') { steps { script { docker.withRegistry('https://registry.home-server', '1e8e4c8e-c709-4475-ab14-8d079a36914a') { pipelineContext.apiImage.push() pipelineContext.webappImage.push() } } } } } }