66 lines
1.8 KiB
Plaintext
66 lines
1.8 KiB
Plaintext
|
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()
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|