Newer
Older
/*
* Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
* Ministerpräsidenten des Landes Schleswig-Holstein
* Staatskanzlei
* Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
*
* Lizenziert unter der EUPL, Version 1.2 oder - sobald
* diese von der Europäischen Kommission genehmigt wurden -
* Folgeversionen der EUPL ("Lizenz");
* Sie dürfen dieses Werk ausschließlich gemäß
* dieser Lizenz nutzen.
* Eine Kopie der Lizenz finden Sie hier:
*
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
*
* Sofern nicht durch anwendbare Rechtsvorschriften
* gefordert oder in schriftlicher Form vereinbart, wird
* die unter der Lizenz verbreitete Software "so wie sie
* ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
* ausdrücklich oder stillschweigend - verbreitet.
* Die sprachspezifischen Genehmigungen und Beschränkungen
* unter der Lizenz sind dem Lizenztext zu entnehmen.
*/
@Library('ozgcloud-libs') _
pipeline {
agent {
node {
label 'jenkins-build-agent-jdk-11'
}
}
environment {
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') {
cloneEingangAdapterRepo()
}
}
}
stage('build vorgang-manager-interface for java 11') {
steps {
script {
echo "Using FORMCYCLE Interface Version: ${FORMCYCLE_INTERFACE_VERSION}"
}
configFileProvider([configFile(fileId: 'maven-settings', variable: 'MAVEN_SETTINGS')]) {
sh 'mvn --version'

OZGCloud
committed
// 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 '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'
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 {
// }
// }
//
// 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
// }
// }
// }
post {
failure {
script {
sendMatrixMessage.sendFailureMessage(FAILED_STAGE)
}
}
}
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'
if ( !isSnapshotVersion([VORGANG_MANAGER_INTERFACE_VERSION]) ) {
sh 'git checkout tags/${VORGANG_MANAGER_INTERFACE_VERSION} -b branch'
}
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}'"
}
}
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
}
Boolean isMainBranch() {
return env.BRANCH_NAME == 'main'