Skip to content
Snippets Groups Projects
Select Git revision
  • 66956ba60f87e31ed3bc3ed6161c1f695335843b
  • master default protected
  • add-frequency-to-form
  • dev protected
  • ckan-2.11.0
  • add-package-custom-fields
  • fix-adding-datasets-for-users-and-editors
  • add-auth-subroute
  • 71-migrate-custom-fields-to-ckanext-scheming
  • add-author-maintainer-information
  • fix-inline-flex-btns
  • fix-known-spatial-uri-validation
  • py3
  • 47-aktuelle-resource-einer-collection-wird-nicht-mehr-gefunden
  • 10-eingabe-der-dct-accrualperiodicity-in-weboberflache
  • v1.3
  • 2.5.3
  • 2.5.2
  • 2.5.1
  • 2.5.0
  • 2.4.7
  • 2.4.6
  • 2.4.5
  • 2.4.4
  • 2.4.3
  • 2.4.2
  • 2.4.1
  • 2.4.0
  • 2.3.1
  • 2.3.0
  • 2.2.0
  • 2.1.0
  • 2.0.0
  • 1.4.3
  • 1.4.2
  • 1.4.1
36 results

dashboard.py

Blame
  • Jenkinsfile 8.33 KiB
    pipeline {
        agent {
           node {
               label 'jenkins-build-agent-jdk-11'
            }
        }
    
        environment {
            BLUE_OCEAN_URL = "https://jenkins.infra.ozg-cloud.systems/job/ozgcloud-formcycle-plugin/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
    
            VORGANG_MANAGER_INTERFACE_VERSION="2.0.0"
            FORMCYCLE_INTERFACE_VERSION=readFormCycleInterfaceVersion()
        }
    
        options {
            timeout(time: 1, unit: 'HOURS')
            disableConcurrentBuilds()
            buildDiscarder(logRotator(numToKeepStr: '5'))
        }
    
        stages {
    
            stage('clone formcycle-interface (eingang-manager) repo') {
    
                steps {
                    script {
                        cloneEingangAdapterRepo()
                    }
                }
            }
    
            stage('build vorgang-manager-interface for java 11') {
    
                steps {
                    script {
                        echo "Using FORMCYCLE Interface Version: ${FORMCYCLE_INTERFACE_VERSION}"
    
                        cloneVorgangManagerRepo()
                    }
                    configFileProvider([configFile(fileId: 'maven-settings', variable: 'MAVEN_SETTINGS')]) {
                        sh 'mvn --version'
                        // nur temporär die Java Version in der Pom anpassen, weil die für das Release 2.0.0 fest verdrahtet ist
                        sh 'xmlstarlet ed --pf -L -N w="http://maven.apache.org/POM/4.0.0" -u "//w:project/w:properties/w:maven.compiler.source" -v 11 vorgang-manager/vorgang-manager-interface/pom.xml'
                        sh 'xmlstarlet ed --pf -L -N w="http://maven.apache.org/POM/4.0.0" -u "//w:project/w:properties/w:maven.compiler.target" -v 11 vorgang-manager/vorgang-manager-interface/pom.xml'
    
                        sh 'mvn -f vorgang-manager/vorgang-manager-interface -s $MAVEN_SETTINGS --no-transfer-progress -Djava.version=11 install'
                    }
                }
            }
    
            stage('build formcycle-interface for java 11') {
    
                steps {
                    configFileProvider([configFile(fileId: 'maven-settings', variable: 'MAVEN_SETTINGS')]) {
                        sh 'mvn --version'
                        sh 'mvn --no-transfer-progress -f eingang-manager/formcycle-adapter/formcycle-adapter-interface -s $MAVEN_SETTINGS -Djava.version=11 install'
                    }
                }
            }
    
            stage('Set Version') {
    
              when {
                not {
                    anyOf {
                        branch 'master'
                        branch 'release'
                    }
                }
              }
              steps {
                    script {
                        FAILED_STAGE=env.STAGE_NAME
                        JAR_TAG = getPomVersion('pom.xml').replace("SNAPSHOT", "${env.BRANCH_NAME}-SNAPSHOT")
                    }
                    configFileProvider([configFile(fileId: 'maven-settings', variable: 'MAVEN_SETTINGS')]) {
                        sh "mvn -s $MAVEN_SETTINGS versions:set -DnewVersion=${JAR_TAG} -DprocessAllModules=true"
                        
                    }
              }
            }
       
            stage('Maven Build') {
                steps {
                    script {
                        FAILED_STAGE=env.STAGE_NAME
                    }
                    configFileProvider([configFile(fileId: 'maven-settings', variable: 'MAVEN_SETTINGS')]) {
                        sh 'mvn --version'
                        sh 'mvn --no-transfer-progress -s $MAVEN_SETTINGS -P ci-build clean install -Dmaven.wagon.http.retryHandler.count=3'
                            
                        script {
    	                    if (env.BRANCH_NAME == 'master') {
    		                    withSonarQubeEnv('sonarqube-ozg-sh'){
    		        				sh 'mvn -s $MAVEN_SETTINGS sonar:sonar'
    		                    }
    		                }
                        }
                    }
                }
                post {
                    always{
                        junit testResults: '**/target/surefire-reports/*.xml', skipPublishingChecks: true
                    }
                }
            }
    
            stage ('Deploy SBOM to DependencyTrack') {
                steps {
                    script {
                        IMAGE_TAG = "${env.BRANCH_NAME}-${getPomVersion('pom.xml')}"
    
                        configFileProvider([configFile(fileId: 'maven-settings', variable: 'MAVEN_SETTINGS')]) {
                            withCredentials([string(credentialsId: 'dependency-track-api-key', variable: 'API_KEY')]) {
    
                                catchError(buildResult: 'UNSTABLE', stageResult: 'FAILURE') {
                                    sh "mvn  --no-transfer-progress -s $MAVEN_SETTINGS io.github.pmckeown:dependency-track-maven-plugin:upload-bom -Ddependency-track.apiKey=$API_KEY -Ddependency-track.projectVersion=${IMAGE_TAG} -Ddependency-track.dependencyTrackBaseUrl=https://dependency-track.ozg-sh.de"
                                }
                            }
                        }
                    }
                }
            }
    
            stage('Deploy to Nexus'){
                steps {
                    script {
                        FAILED_STAGE = env.STAGE_NAME
                    }
                    configFileProvider([configFile(fileId: 'maven-settings', variable: 'MAVEN_SETTINGS')]) {
                        sh 'mvn --no-transfer-progress -s $MAVEN_SETTINGS -DskipTests deploy -Dmaven.wagon.http.retryHandler.count=3'
                         sh "mvn -s $MAVEN_SETTINGS versions:revert"
                    }
                }
            }
    
    //		   Es sollte erstmal auskommentiert bleiben. Es kann man später als Beispiel für Deployment in Xima Cloud
    // 		   verwendet werden
    //         stage('Deploy FormCycle Plugin to FC-server') {
    //             when {
    //                 anyOf {
    //                     branch 'master'
    //                 }
    //             }
    //
    //             steps {
    //                 script {
    //                     FAILED_STAGE=env.STAGE_NAME
    //                 }
    //                 configFileProvider([configFile(fileId: 'maven-settings', variable: 'MAVEN_SETTINGS')]) {
    //
    //                         sh 'mvn --version'
    //                         sh 'mvn --no-transfer-progress -s $MAVEN_SETTINGS -P ci-build fc-deploy:deploy -DfcDeployUrl="https://formcycle.dev.ozg-sh.de/formcycle" -DfcDeployClientId="2" -DfcDeployToken=adminhase23 -DskipTests=true -Dmaven.wagon.http.retryHandler.count=3'
    //                 }
    //             }
    //             post {
    //                 always{
    //                     junit testResults: '**/target/surefire-reports/*.xml', skipPublishingChecks: true
    //                 }
    //             }
    //         }
        }
    }
    
    Void cloneVorgangManagerRepo() {
        withCredentials([usernamePassword(credentialsId: 'jenkins-gitea-access-token', passwordVariable: 'TOKEN', usernameVariable: 'USER')]) {
            
                sh 'git clone https://${USER}:${TOKEN}@git.ozg-sh.de/ozgcloud-app/vorgang-manager.git'
            
        }
        dir("vorgang-manager") {
            if ( !isSnapshotVersion([VORGANG_MANAGER_INTERFACE_VERSION]) ) {
                sh 'git checkout tags/${VORGANG_MANAGER_INTERFACE_VERSION} -b branch'
            }
        }
        configureGit("vorgang-manager")
    }
    
    Void cloneEingangAdapterRepo() {
        withCredentials([usernamePassword(credentialsId: 'jenkins-gitea-access-token', passwordVariable: 'TOKEN', usernameVariable: 'USER')]) {
            
                sh 'git clone https://${USER}:${TOKEN}@git.ozg-sh.de/ozgcloud-app/eingang-manager.git'
            
        }
        dir("eingang-manager") {
            if ( !isSnapshotVersion([FORMCYCLE_INTERFACE_VERSION]) ) {
                sh 'git checkout tags/${FORMCYCLE_INTERFACE_VERSION} -b branch'
            }
        }
        configureGit("eingang-manager")
    }
    
    Void configureGit(String directory) {
        final email = "jenkins@ozg-sh.de"
        final name = "jenkins"
    
        dir(directory) {
            sh "git config user.email '${email}'"
            sh "git config user.name '${name}'"
        }
    }
    
    String readFormCycleInterfaceVersion() {
        return sh(returnStdout: true, script: 'xmlstarlet sel -N w="http://maven.apache.org/POM/4.0.0" -t -v "//w:project/w:properties/w:formcycle-adapter-interface.version" -n pom.xml').trim()
    }
    
    Boolean isSnapshotVersion(List versions) {
        return matchRegexVersion(versions, SNAPSHOT_REGEX)
    }
    
    Boolean matchRegexVersion(List versions, String regex) {
        for (version in versions) {
            if ( !(version ==~ regex) ) {
                return false
            }
        }
    
        return true
    }
    String getPomVersion(String pomFile){
        def pom = readMavenPom file: pomFile
    
        return pom.version
    }