diff --git a/Jenkinsfile b/Jenkinsfile index 78420f647e1ef9c9a3792f83216489e2f75f773f..51c563e90d457d9b33b0d414f7cb300e503b01a2 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1,18 +1,18 @@ pipeline { agent { node { - label 'jenkins-build-agent' + label 'jenkins-quarkus-build-agent' } } environment { - BLUE_OCEAN_URL = "https://jenkins.ozg-sh.de/blue/organizations/jenkins/user-manager/detail/${env.BRANCH_NAME}/${env.BUILD_NUMBER}/pipeline" + BLUE_OCEAN_URL = "https://jenkins.ozg-sh.de/job/user-manager/job/${env.BRANCH_NAME}/${env.BUILD_NUMBER}/" 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_NATIVE_CONTAINER_RUNTIME = "docker" QUARKUS_CONTAINER_IMAGE_NAME = "user-manager" QUARKUS_CONTAINER_IMAGE_TAG = "build-latest" } @@ -28,14 +28,9 @@ pipeline { steps { script { FAILED_STAGE = env.STAGE_NAME - def rootPom = readMavenPom file: 'pom.xml' - def rootVersion = rootPom.version - - def userManagerPom = readMavenPom file: 'user-manager-server/pom.xml' - def userManagerVersion = userManagerPom.version - - def interfacePom = readMavenPom file: 'user-manager-interface/pom.xml' - def interfaceVersion = interfacePom.version + def rootVersion = getPomVersion('pom.xml') + def userManagerVersion = getPomVersion('user-manager-server/pom.xml') + def interfaceVersion = getPomVersion('user-manager-interface/pom.xml') if(env.BRANCH_NAME == 'release'){ if ( !(rootVersion ==~ RELEASE_REGEX) || !(userManagerVersion ==~ RELEASE_REGEX) || !(interfaceVersion ==~ RELEASE_REGEX)) { @@ -61,7 +56,7 @@ pipeline { } configFileProvider([configFile(fileId: 'maven-settings', variable: 'MAVEN_SETTINGS')]) { - sh 'mvn -pl user-manager-interface -s $MAVEN_SETTINGS clean deploy -Dmaven.wagon.http.retryHandler.count=3' + sh './mvnw -pl user-manager-interface -s $MAVEN_SETTINGS clean deploy -Dmaven.wagon.http.retryHandler.count=3' } } } @@ -72,12 +67,7 @@ pipeline { FAILED_STAGE=env.STAGE_NAME configFileProvider([configFile(fileId: 'maven-settings', variable: 'MAVEN_SETTINGS')]) { - def mavenConfig = sh script: 'echo $MAVEN_CONFIG', returnStdout: true - sh 'unset MAVEN_CONFIG' - - sh './mvnw -pl user-manager-server -s $MAVEN_SETTINGS clean deploy -Dmaven.wagon.http.retryHandler.count=3' - - sh "export MAVEN_CONFIG=${mavenConfig}" + sh './mvnw -pl user-manager-server -s $MAVEN_SETTINGS clean deploy -Dmaven.wagon.http.retryHandler.count=3' junit testResults: '**/target/surefire-reports/*.xml', skipPublishingChecks: true } } @@ -91,12 +81,7 @@ pipeline { withCredentials([usernamePassword(credentialsId: 'jenkins-nexus-login', usernameVariable: 'USER', passwordVariable: 'PASSWORD')]) { configFileProvider([configFile(fileId: 'maven-settings', variable: 'MAVEN_SETTINGS')]) { - def mavenConfig = sh script: 'echo $MAVEN_CONFIG', returnStdout: true - sh 'unset MAVEN_CONFIG' - - sh './mvnw -pl user-manager-server -s $MAVEN_SETTINGS clean verify -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 "export MAVEN_CONFIG=${mavenConfig}" + sh './mvnw -pl user-manager-server -s $MAVEN_SETTINGS clean verify -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 -Dquarkus.native.remote-container-build=true -Dmaven.wagon.http.retryHandler.count=3' } } } @@ -105,20 +90,18 @@ pipeline { stage('Sonar Checks') { steps { - script { - FAILED_STAGE=env.STAGE_NAME + when { + branch 'master' } - configFileProvider([configFile(fileId: 'maven-settings', variable: 'MAVEN_SETTINGS')]) { - dir('user-manager-server') { - script { - try { - if (env.BRANCH_NAME == 'master') { - withSonarQubeEnv('sonarqube-ozg-sh'){ - def workspace = WORKSPACE - - sh "mvn -s $MAVEN_SETTINGS test sonar:sonar -Dsonar.coverage.jacoco.xmlReportPaths=${env.WORKSPACE}/user-manager-server/target/jacoco-report/jacoco.xml" - } - } + script { + FAILED_STAGE=env.STAGE_NAME + + configFileProvider([configFile(fileId: 'maven-settings', variable: 'MAVEN_SETTINGS')]) { + dir('user-manager-server') { + try { + withSonarQubeEnv('sonarqube-ozg-sh'){ + sh "./mvnw -s $MAVEN_SETTINGS test sonar:sonar -Dsonar.coverage.jacoco.xmlReportPaths=${env.WORKSPACE}/user-manager-server/target/jacoco-report/jacoco.xml" + } } catch (Exception e) { unstable("SonarQube failed") } @@ -216,10 +199,10 @@ pipeline { Void deployHelmChart(String helmChartVersion) { withCredentials([usernamePassword(credentialsId: 'jenkins-nexus-login', usernameVariable: 'USERNAME', passwordVariable: 'PASSWORD')]){ if (env.BRANCH_NAME == 'release') { - result = sh script: '''curl -u $USERNAME:$PASSWORD http://nexus.dev-tools:8081/service/rest/v1/components?repository=ozg-base-apps -F file=@user-manager-'''+helmChartVersion+'''.tgz''', returnStdout: true + result = sh script: '''curl -u $USERNAME:$PASSWORD https://nexus.ozg-sh.de/service/rest/v1/components?repository=ozg-base-apps -F file=@user-manager-'''+helmChartVersion+'''.tgz''', returnStdout: true } else { - result = sh script: '''curl -u $USERNAME:$PASSWORD http://nexus.dev-tools:8081/service/rest/v1/components?repository=ozg-base-apps-snapshot -F file=@user-manager-'''+helmChartVersion+'''.tgz''', returnStdout: true + result = sh script: '''curl -u $USERNAME:$PASSWORD https://nexus.ozg-sh.de/service/rest/v1/components?repository=ozg-base-apps-snapshot -F file=@user-manager-'''+helmChartVersion+'''.tgz''', returnStdout: true } if (result != '') { @@ -328,10 +311,10 @@ String generateImageTag() { Void tagAndPushDockerImage(String newTag) { withCredentials([usernamePassword(credentialsId: 'jenkins-nexus-login', usernameVariable: 'USER', passwordVariable: 'PASSWORD')]) { - sh 'podman login docker.ozg-sh.de -u ${USER} -p ${PASSWORD}' - sh "podman pull docker.ozg-sh.de/root/user-manager:build-latest" + sh 'docker login docker.ozg-sh.de -u ${USER} -p ${PASSWORD}' + sh "docker pull docker.ozg-sh.de/root/user-manager:build-latest" - sh "podman tag docker.ozg-sh.de/root/user-manager:build-latest docker.ozg-sh.de/user-manager:${newTag}" - sh "podman push docker.ozg-sh.de/user-manager:${newTag}" + sh "docker tag docker.ozg-sh.de/root/user-manager:build-latest docker.ozg-sh.de/user-manager:${newTag}" + sh "docker push docker.ozg-sh.de/user-manager:${newTag}" } } \ No newline at end of file