Skip to content
Snippets Groups Projects
Select Git revision
  • main default protected
  • release
  • master-interface-proto4
  • ozg-5634-ozgcloud-ingress
  • OZG-3322_connect_to_mongodb_over_tls
  • 2.19.0
  • 2.18.0
  • 2.17.0
  • 2.16.0
  • 2.15.0
  • 2.14.0
  • 2.13.0
  • 2.12.0
  • 2.11.0
  • 2.10.1
  • 2.10.0
  • 2.9.0
  • 2.8.0
  • 2.7.1
  • 2.7.0
  • 2.6.0
  • 2.5.1
  • 2.5.0
  • 2.4.0
  • 2.3.0
25 results

Jenkinsfile

Blame
  • Jenkinsfile 8.68 KiB
    pipeline {
        agent {
           node {
               label 'jenkins-worker'
            }
        }
    
        environment {
            BLUE_OCEAN_URL = "https://jenkins.ozg-sh.de/blue/organizations/jenkins/user-manager/detail/${env.BRANCH_NAME}/${env.BUILD_NUMBER}/pipeline"
            RELEASE_REGEX = /\d+.\d+.\d+/
            SNAPSHOT_REGEX = /\d+.\d+.\d+-SNAPSHOT/
            FAILED_STAGE = ""
            
            //The container runtime (e.g. docker) that is used to do an image based build. If this is set then a container build is always done.
            QUARKUS_NATIVE_CONTAINER_RUNTIME = "podman"
            QUARKUS_CONTAINER_IMAGE_NAME = "user-manager"
            QUARKUS_CONTAINER_IMAGE_TAG = "build-latest"
        }
    
        options {
            timeout(time: 1, unit: 'HOURS')
            disableConcurrentBuilds()
            buildDiscarder(logRotator(numToKeepStr: '5'))
        }
    
        stages {
            stage('Check Version') {
                steps {
                    script {
                        FAILED_STAGE = env.STAGE_NAME
                        def rootPom = readMavenPom file: 'pom.xml'
                        def rootVersion = rootPom.version
                        
                        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 UserManager') {
    			steps {
    				script {
    				    FAILED_STAGE=env.STAGE_NAME
    				}
    				container("quarkus-22"){
    				    configFileProvider([configFile(fileId: 'maven-settings', variable: 'MAVEN_SETTINGS')]) {
    						sh './mvnw -s $MAVEN_SETTINGS clean deploy -Dmaven.wagon.http.retryHandler.count=3'
    				    }                       
    				}            
    			}
             }
             
             stage('Build native container image') {
    			steps {
    				script {
    				    FAILED_STAGE=env.STAGE_NAME
    				    
    				    def pom = readMavenPom file: 'pom.xml'
                        def version = pom.version
                        
                        BRANCH_AND_VERSION = "${env.BRANCH_NAME}-${version}"
    				    
    					container("quarkus-22"){
    						withCredentials([usernamePassword(credentialsId: 'jenkins-docker-login', usernameVariable: 'USER', passwordVariable: 'PASSWORD')]) {
    							configFileProvider([configFile(fileId: 'maven-settings', variable: 'MAVEN_SETTINGS')]) {
    								sh './mvnw -s $MAVEN_SETTINGS clean package -DskipTests -Pnative -Dquarkus.container-image.registry=docker.ozg-sh.de -Dquarkus.container-image.username=${USER} -Dquarkus.container-image.password=${PASSWORD} -Dquarkus.container-image.push=true -Dquarkus.container-image.build=true -Dmaven.wagon.http.retryHandler.count=3'
    								
    								sh 'podman login docker.ozg-sh.de -u ${USER} -p ${PASSWORD}'
    																
    								echo "Version: ${BRANCH_AND_VERSION}";
    							
    								sh "podman tag root/user-manager:build-latest docker.ozg-sh.de/user-manager:${BRANCH_AND_VERSION}"
    	                            sh "podman push docker.ozg-sh.de/user-manager:${BRANCH_AND_VERSION}"
    	                            
    	                            if (env.BRANCH_NAME == 'master') {
    	                            	sh 'podman tag root/user-manager:build-latest docker.ozg-sh.de/user-manager:snapshot-latest'
    	                            	sh 'podman push docker.ozg-sh.de/user-manager:snapshot-latest'
    	                            }
    	
    	                            if (env.BRANCH_NAME == 'release') {
    	                            	sh 'podman tag root/user-manager:build-latest docker.ozg-sh.de/user-manager:latest'
    	                            	sh 'podman push docker.ozg-sh.de/user-manager:latest'
    	                            }
    							} 	
    						}
    					}    
    				}  
    			}
    		}
    		
    		stage('Push Docker image') {
                steps {
                    script {
                        FAILED_STAGE=env.STAGE_NAME
                        def pom = readMavenPom file: 'pom.xml'
                        def version = pom.version
                        
                        BRANCH_AND_VERSION = "${env.BRANCH_NAME}-${version}"
    
                        container("quarkus-22") {
                            withCredentials([usernamePassword(credentialsId: 'jenkins-docker-login', usernameVariable: 'USER', passwordVariable: 'PASSWORD')]) {
                                sh 'podman login docker.ozg-sh.de -u ${USER} -p ${PASSWORD}'
    							
    							echo "Version: ${BRANCH_AND_VERSION}";
    							//sh "podman tag root/user-manager:build-latest docker.ozg-sh.de/user-manager:${BRANCH_AND_VERSION}"
    //                            sh "podman push docker.ozg-sh.de/user-manager:${BRANCH_AND_VERSION}"
                                
      //                          if (env.BRANCH_NAME == 'master') {
                                	//sh 'podman tag root/user-manager:build-latest docker.ozg-sh.de/user-manager:snapshot-latest'
                                	//sh 'podman push docker.ozg-sh.de/user-manager:snapshot-latest'
                                //}
    //
                                //if (env.BRANCH_NAME == 'release') {
    //                            	sh 'podman tag root/user-manager:build-latest docker.ozg-sh.de/user-manager:latest'
                                	//sh 'podman push docker.ozg-sh.de/user-manager:latest'
                                //}
                            }
                        }
                    }
                }
            }
            
            stage('Deploy UserManager') {	
                when {	
                    anyOf {	
                        branch 'master'	
                        branch 'release'	
                    }	
                }	
                	
                steps {	
                    script {	
                        FAILED_STAGE = env.STAGE_NAME	
                    }	
                    container("kubectl"){	
                        script {	
                            if (env.BRANCH_NAME == 'master') {	
                                sh 'kubectl rollout restart deployment/user-manager -n sh-kiel-dev'	
                                sh 'kubectl rollout status deployment/user-manager -n sh-kiel-dev'	
                                
                                sh 'kubectl rollout restart deployment/user-manager -n sh-ea-dev'
                                sh 'kubectl rollout status deployment/user-manager -n sh-ea-dev'
                            }	
                        }	
                    }	
                }	
            }
           
            stage('Sonar Checks') {
            	steps {
            	     script {
                        FAILED_STAGE=env.STAGE_NAME
                    }
                    container("maven-17") {
                    	configFileProvider([configFile(fileId: 'maven-settings', variable: 'MAVEN_SETTINGS')]) {
                			script {
                            	try {
    	                            if (env.BRANCH_NAME == 'master') {
    	                                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
            }
            failure {
                script {
                    if (env.BRANCH_NAME == 'master' || env.BRANCH_NAME == 'release') {
                        //sendFailureMessage()
                    }
                }
            }
        }
    }
    
    Void sendFailureMessage() {
        def room = ''
        def data = """{"msgtype":"m.text", \
                        "body":"UserManager: Build Failed. Stage: ${FAILED_STAGE} Build-ID: ${env.BUILD_NUMBER} Link: ${BLUE_OCEAN_URL}", \
                        "format": "org.matrix.custom.html", \
                        "formatted_body":"UserManager: Build Failed. Stage: ${FAILED_STAGE} Build-ID: <a href='${BLUE_OCEAN_URL}'>${env.BUILD_NUMBER}</a>"}"""
           
        if (env.BRANCH_NAME == 'master') {
            room = "!iQPAvQIiRwRpNOszjw:matrix.ozg-sh.de"
        }
        else if (env.BRANCH_NAME == 'release') {
            room = "!oWZpUGTFsxkJIYNfYg:matrix.ozg-sh.de"
        }
    
        sh "curl -XPOST -H 'authorization: Bearer ${getElementAccessToken()}' -d '${data}' https://matrix.ozg-sh.de/_matrix/client/v3/rooms/$room/send/m.room.message"
    }
    
    String getElementAccessToken() {
        withCredentials([string(credentialsId: 'element-login-json', variable: 'LOGIN_JSON')]) {
            return readJSON ( text: sh (script: '''curl -XPOST -d \"$LOGIN_JSON\" https://matrix.ozg-sh.de/_matrix/client/v3/login''', returnStdout: true)).access_token
        }
    }