Skip to content
Snippets Groups Projects
Select Git revision
  • ed1b276b25bd8a468f2a15a9a600ea6c896fa0db
  • main default protected
  • OZG-7856_schadcode-scanner-e2e
  • OZG-7856_schadcode_scanner
  • OZG-7985-fix-sorting
  • OZG-8314-Alfa-Vorgang-Bearbeiter-Zuweisung-entfernen
  • OZG-8305-Create-webpack-sbom
  • tooltip-improvements
  • release-info
  • release-administration
  • release
  • OZG-7714-UpgradeKeycloakDependencyTo25
  • OZG-8086-Admin-Datenanfrage-erstellen
  • OZG-8086-Datenanfrage-Umbenennung
  • mongodb-7-0-16-e2e
  • OZG-6220-Bescheid-speichern-ohne-Postfach
  • OZG-7922-KeycloakOperatorExceptions
  • OZG-8142-poc-cards
  • OZG-8086-E2E
  • OZG-8086-E2E2
  • OZG-8142-ProjectionStuff
  • 1.11.0-info
  • 1.11.0-administration
  • 2.26.0-alfa
  • 1.10.0-info
  • 1.10.0-administration
  • 2.25.0-alfa
  • 1.9.0-info
  • 1.9.0-administration
  • 2.24.0-alfa
  • 1.8.0-info
  • 1.8.0-administration
  • 2.23.0-alfa
  • 1.7.0-info
  • 1.7.0-administration
  • 2.22.0-alfa
  • 1.6.0-info
  • 1.6.0-administration
  • 2.21.0-alfa
  • 1.5.0-info
  • 1.5.0-administration
41 results

Jenkinsfile

Blame
  • Jenkinsfile 8.18 KiB
    def FAILED_STAGE
    
    pipeline {
        agent {
            node {
                label 'jenkins-worker'
            }
        }
    
        environment {
            BLUE_OCEAN_URL = "https://jenkins.ozg-sh.de/blue/organizations/jenkins/goofy/detail/${env.BRANCH_NAME}/${env.BUILD_NUMBER}/pipeline"
        }
    
        options {
            timeout(time: 1, unit: 'HOURS')
            disableConcurrentBuilds()
            buildDiscarder(logRotator(numToKeepStr: '5'))
        }
    
        stages {
            stage('Client') {
                steps {
                    container("nodejs"){
                        script {
                            FAILED_STAGE=env.STAGE_NAME
    
                            sh 'npm --version'
                            dir('goofy-client') {
                                sh 'echo "registry=http://nexus.ozg-sh.de/repository/npm-proxy" >> ~/.npmrc'
                                sh 'echo "_auth=amVua2luczpQaihzX0ZNNFU5ZC8=" >> ~/.npmrc'
    
                                sh 'npm install --no-optional'
                            
                                if (env.BRANCH_NAME == 'release') {
                                    sh 'npm run ci-prodBuild'
                                }
                                else {
                                    sh 'npm run ci-build'
                                }
    
                                sh 'npm run ci-test'
    
                                if (env.BRANCH_NAME == 'master') {
                                    withSonarQubeEnv('sonarqube-ozg-sh'){
                                        sh 'npm run ci-sonar'
                                    }
                                }
                            }
                        }
                    }
                }
                post {
                    always{
                        junit testResults: 'goofy-client/test-report.xml', skipPublishingChecks: true
                    }
                }
            }
    
            stage('Server') {
                steps {
                    script {
                        FAILED_STAGE=env.STAGE_NAME
                    }
                    container("maven-16"){
                        configFileProvider([configFile(fileId: 'maven-settings', variable: 'MAVEN_SETTINGS')]) {
                            sh 'mvn --version'
                            sh 'mvn -s $MAVEN_SETTINGS -pl -goofy-client clean install spring-boot:build-image -Dmaven.wagon.http.retryHandler.count=3'
                        }
    
                        script {
                            if (env.BRANCH_NAME == 'master') {
            	                dir('goofy-server'){
                                    withSonarQubeEnv('sonarqube-ozg-sh'){
                                        sh 'mvn sonar:sonar'
                                    }
                                }
    	                    }
                        }
                    }
                }
                post {
                    always{
                        junit testResults: '**/target/surefire-reports/*.xml', skipPublishingChecks: true
                    }
                }
            }
    
            stage('Push Docker image') {
                steps {
                    script {
                        FAILED_STAGE=env.STAGE_NAME
                        def pom = readMavenPom file: 'pom.xml'
                        def version = pom.version
    
                        container("docker") {
                            withCredentials([usernamePassword(credentialsId: 'jenkins-docker-login', usernameVariable: 'USER', passwordVariable: 'PASSWORD')]) {
                                sh 'docker login docker.ozg-sh.de -u ${USER} -p ${PASSWORD}'
    
                                sh "docker tag docker.ozg-sh.de/goofy:build-latest docker.ozg-sh.de/goofy:${env.BRANCH_NAME}-${version}"
                                sh "docker push docker.ozg-sh.de/goofy:${env.BRANCH_NAME}-${version}"
    
                                if (env.BRANCH_NAME == 'master') {
                                    sh 'docker tag docker.ozg-sh.de/goofy:build-latest docker.ozg-sh.de/goofy:e2e-test'
                                    sh 'docker push docker.ozg-sh.de/goofy:e2e-test'
                                }
                            }
                        }
                    }
                }
            }
    
            stage('E2E-Tests') {
                when {
                    branch 'master'
                }
                steps {
                    script {
                        FAILED_STAGE=env.STAGE_NAME
                    }
    
                    container("kubectl") {
                        sh 'kubectl rollout restart deployment/goofy -n sh-kiel-e2e'
                        sh 'kubectl rollout status deployment/goofy -n sh-kiel-e2e'
    
                        sh 'kubectl rollout restart deployment/pluto -n sh-kiel-e2e'
                        sh 'kubectl rollout status deployment/pluto -n sh-kiel-e2e'
                    }
    
                    container("cypress") {
                        dir('goofy-client') {
                            sh 'npm run cypress:version'
                            sh 'npm run cypress:ci-run'
                        }
                    }
                }
                post {
                    always {
                        publishHTML (target: [
                        allowMissing: false,
                        alwaysLinkToLastBuild: false,
                        keepAll: true,
                        reportDir: 'goofy-client/apps/goofy-e2e/reports',
                        reportFiles: 'report.html',
                        reportName: "Goofy E2E-Tests"
                        ])
                    }
                }
            }
    
            stage('Deploy Maven Artifacts to Nexus') {
                when {
                    anyOf {
                        branch 'master'
                        branch 'release'
                    }
                }
                steps {
                    script {
                        FAILED_STAGE = env.STAGE_NAME
                    }
                    container('maven-16') {
                        configFileProvider([configFile(fileId: 'maven-settings', variable: 'MAVEN_SETTINGS')]) {
                            sh 'mvn -s $MAVEN_SETTINGS -pl -goofy-client -DskipTests deploy'
                        }
                    }
                }
            }
    
            stage('Deploy Goofy') {
                when {
                    anyOf {
                        branch 'master'
                        branch 'release'
                    }
                }
                
                steps {
                    script {
                        FAILED_STAGE = env.STAGE_NAME
                    }
                    container("docker") {
                        script {
                            withCredentials([usernamePassword(credentialsId: 'jenkins-docker-login', usernameVariable: 'USER', passwordVariable: 'PASSWORD')]) {
                                sh 'docker login docker.ozg-sh.de -u ${USER} -p ${PASSWORD}'
                                
                                if (env.BRANCH_NAME == 'release') {
                                    sh 'docker tag docker.ozg-sh.de/goofy:build-latest docker.ozg-sh.de/goofy:latest'
                                    sh 'docker push docker.ozg-sh.de/goofy:latest'
                                }
    
                                if (env.BRANCH_NAME == 'master') {
                                    sh 'docker tag docker.ozg-sh.de/goofy:build-latest docker.ozg-sh.de/goofy:snapshot-latest'
                                    sh 'docker push docker.ozg-sh.de/goofy:snapshot-latest'
                                }
                            }
                        }
                    }
    
                    container("kubectl"){
                        script {
                            if (env.BRANCH_NAME == 'release') {
                                sh 'kubectl rollout restart deployment/goofy -n sh-kiel-test'
                                sh 'kubectl rollout status deployment/goofy -n sh-kiel-test'
                                sh 'kubectl rollout restart deployment/goofy -n sh-sl-test'
                                sh 'kubectl rollout status deployment/goofy -n sh-sl-test'
                            }
    
                            if (env.BRANCH_NAME == 'master') {
                                sh 'kubectl rollout restart deployment/goofy -n sh-kiel-dev'
                                sh 'kubectl rollout status deployment/goofy -n sh-kiel-dev'
                            }
                        }
                    }
                }
            }
        }
        post {
            failure {
                script {
                    if (env.BRANCH_NAME == 'master') {
                        slackSend(color: "danger", message: "Goofy: Build Failed. Stage: ${FAILED_STAGE} Build-ID: <${BLUE_OCEAN_URL}|${env.BUILD_NUMBER}>")
                    }
                }
            }
        }
    }