Skip to content
Snippets Groups Projects
Jenkinsfile 3.11 KiB
Newer Older
  • Learn to ignore specific revisions
  • OZGCloud's avatar
    OZGCloud committed
    pipeline {
        agent {
           node {
               label 'jenkins-build-agent'
            }
        }
    
        environment {
            BLUE_OCEAN_URL = "https://jenkins.infra.ozg-cloud.systems/job/ozgcloud-processor-manager/job/${env.BRANCH_NAME}/${env.BUILD_NUMBER}/"
            RELEASE_REGEX = /\d+.\d+.\d+/
            SNAPSHOT_REGEX = /\d+.\d+.\d+-SNAPSHOT/
            FAILED_STAGE = ""
            SH_SUCCESS_STATUS_CODE = 0
        }
    
        options {
            timeout(time: 1, unit: 'HOURS')
            disableConcurrentBuilds()
            buildDiscarder(logRotator(numToKeepStr: '5'))
        }
    
        stages {
            stage('Check Version') {
                steps {
                    script {
                        FAILED_STAGE = env.STAGE_NAME
                        def rootVersion = getPomVersion('pom.xml')
    
                        if(env.BRANCH_NAME == 'release'){
                            if ( !(rootVersion ==~ RELEASE_REGEX)) {
                                error("Keine Release Version für Branch ${env.BRANCH_NAME}.")
                            }
                        } else {
                            if ( !(rootVersion ==~ SNAPSHOT_REGEX)) {
                                error("Keine Snapshot Version für Branch ${env.BRANCH_NAME}.")
                            }
                        }
                    }
                }
            }
            
            stage('Build Vorgang-Schnittstelle') {
              steps {
                    script {
                        FAILED_STAGE=env.STAGE_NAME
                    }
    
                    configFileProvider([configFile(fileId: 'maven-settings', variable: 'MAVEN_SETTINGS')]) {
                        sh 'mvn -s $MAVEN_SETTINGS clean install -Dmaven.wagon.http.retryHandler.count=3'
                    }
                }
            }
          
            stage('Deploy to Nexus'){
                when {
                    anyOf {
                        branch 'master'
                        branch 'release'
                    }
                }
                steps {
                    script {
                        FAILED_STAGE = env.STAGE_NAME
                    }
                    configFileProvider([configFile(fileId: 'maven-settings', variable: 'MAVEN_SETTINGS')]) {
                        sh 'mvn -s $MAVEN_SETTINGS -DskipTests deploy -Dmaven.wagon.http.retryHandler.count=3'
                    }
                }
            }
    
            stage('Sonar Checks') {
                when {
                    branch 'master'
                }
            	steps {
            	     script {
                        FAILED_STAGE=env.STAGE_NAME
    
                      	configFileProvider([configFile(fileId: 'maven-settings', variable: 'MAVEN_SETTINGS')]) {
                           	try {
                                withSonarQubeEnv('sonarqube-ozg-sh'){
                                    sh 'mvn -s $MAVEN_SETTINGS sonar:sonar'
                                }
                            } catch (Exception e) {
                                unstable("SonarQube failed")
                            }
                		}
                    }
            	}
            }
        }
        
        post {
            always{
                junit testResults: '**/target/surefire-reports/*.xml', skipPublishingChecks: true
            }
        }
    }
    
    
    
    String getPomVersion(String pomFile){
        def pom = readMavenPom file: pomFile
    
        return pom.version
    }