diff --git a/Jenkinsfile b/Jenkinsfile index 5e663c6ec3ad7a89633c6dbc8f7a74a6f55c2325..99a57d1707c4303cae37ec8196cc61903568ed12 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -24,192 +24,192 @@ pipeline { buildDiscarder(logRotator(numToKeepStr: '5')) } -// stages { -// stage('Check Version') { -// steps { -// script { -// FAILED_STAGE = env.STAGE_NAME -// 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)) { -// error("Keine Release Version für Branch ${env.BRANCH_NAME}.") -// } -// } else { -// if ( !(rootVersion ==~ SNAPSHOT_REGEX) || !(userManagerVersion ==~ SNAPSHOT_REGEX) || !(interfaceVersion ==~ SNAPSHOT_REGEX)) { -// error("Keine Snapshot Version für Branch ${env.BRANCH_NAME}.") -// } -// } -// -// if( !(rootVersion == userManagerVersion && rootVersion == interfaceVersion )){ -// error("Versionen sind nicht identisch") -// } -// } -// } -// } -// -// stage('Build UserManager GRPC') { -// steps { -// script { -// FAILED_STAGE=env.STAGE_NAME -// } -// -// configFileProvider([configFile(fileId: 'maven-settings', variable: 'MAVEN_SETTINGS')]) { -// sh './mvnw -pl user-manager-interface -s $MAVEN_SETTINGS clean deploy -Dmaven.wagon.http.retryHandler.count=3' -// } -// } -// } -// -// stage('Build UserManager') { -// steps { -// script { -// FAILED_STAGE=env.STAGE_NAME -// -// configFileProvider([configFile(fileId: 'maven-settings', variable: 'MAVEN_SETTINGS')]) { -// 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 -// } -// } -// } -// } -// -// stage('Build native container image') { -// steps { -// script { -// FAILED_STAGE=env.STAGE_NAME -// -// withCredentials([usernamePassword(credentialsId: 'jenkins-nexus-login', usernameVariable: 'USER', passwordVariable: 'PASSWORD')]) { -// configFileProvider([configFile(fileId: 'maven-settings', variable: 'MAVEN_SETTINGS')]) { -// 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' -// } -// } -// } -// } -// } -// -// stage ('OWASP Dependency-Check Vulnerabilities') { -// steps { -// dependencyCheck additionalArguments: ''' -// -o "./" -// -s "./" -// -f "ALL" -// -d /dependency-check-data -// --suppression dependency-check-supressions.xml -// --disableKnownExploited -// --disableArchive -// --prettyPrint''', odcInstallation: 'dependency-check-owasp' -// -// dependencyCheckPublisher pattern: 'dependency-check-report.xml' -// } -// } -// -// stage('Sonar Checks') { -// when { -// branch 'master' -// } -// steps { -// 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 package sonar:sonar -Dsonar.coverage.jacoco.xmlReportPaths=${env.WORKSPACE}/user-manager-server/target/jacoco-report/jacoco.xml" -// } -// } catch (Exception e) { -// unstable("SonarQube failed") -// } -// } -// } -// } -// } -// } -// -// stage('Tag and Push Docker image') { -// steps { -// script { -// FAILED_STAGE = env.STAGE_NAME -// IMAGE_TAG = generateImageTag() -// -// tagAndPushDockerImage(IMAGE_TAG) -// -// if (env.BRANCH_NAME == 'master') { -// tagAndPushDockerImage('snapshot-latest') -// } -// else if (env.BRANCH_NAME == 'release') { -// tagAndPushDockerImage('latest') -// } -// } -// } -// } -// -// stage('Test, build and deploy Helm Chart') { -// steps { -// script { -// FAILED_STAGE=env.STAGE_NAME -// HELM_CHART_VERSION = generateHelmChartVersion() -// -// dir('src/main/helm') { -// sh "helm lint -f ../../test/unit-values.yaml" -// -// sh "helm unittest -f '../../test/helm/*.yaml' -v '../../test/unit-values.yaml' ." -// -// sh "helm package --version=${HELM_CHART_VERSION} ." -// -// deployHelmChart(HELM_CHART_VERSION) -// } -// } -// } -// } -// -// stage('Rollout Dev UserManager') { -// when { -// branch 'master' -// } -// steps { -// script { -// FAILED_STAGE = env.STAGE_NAME -// -// cloneGitopsRepo() -// -// setNewDevUserManagerVersion() -// -// pushDevGitopsRepo() -// } -// } -// } -// -// stage('Trigger Test rollout') { -// when { -// branch 'release' -// } -// -// steps { -// script { -// FAILED_STAGE = env.STAGE_NAME -// -// cloneGitopsRepo() -// -// setNewTestUserManagerVersion() -// -// pushTestGitopsRepo() -// } -// } -// } -// } + stages { + stage('Check Version') { + steps { + script { + FAILED_STAGE = env.STAGE_NAME + 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)) { + error("Keine Release Version für Branch ${env.BRANCH_NAME}.") + } + } else { + if ( !(rootVersion ==~ SNAPSHOT_REGEX) || !(userManagerVersion ==~ SNAPSHOT_REGEX) || !(interfaceVersion ==~ SNAPSHOT_REGEX)) { + error("Keine Snapshot Version für Branch ${env.BRANCH_NAME}.") + } + } + + if( !(rootVersion == userManagerVersion && rootVersion == interfaceVersion )){ + error("Versionen sind nicht identisch") + } + } + } + } + + stage('Build UserManager GRPC') { + steps { + script { + FAILED_STAGE=env.STAGE_NAME + } + + configFileProvider([configFile(fileId: 'maven-settings', variable: 'MAVEN_SETTINGS')]) { + sh './mvnw -pl user-manager-interface -s $MAVEN_SETTINGS clean deploy -Dmaven.wagon.http.retryHandler.count=3' + } + } + } + + stage('Build UserManager') { + steps { + script { + FAILED_STAGE=env.STAGE_NAME + + configFileProvider([configFile(fileId: 'maven-settings', variable: 'MAVEN_SETTINGS')]) { + 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 + } + } + } + } + + stage('Build native container image') { + steps { + script { + FAILED_STAGE=env.STAGE_NAME + + withCredentials([usernamePassword(credentialsId: 'jenkins-nexus-login', usernameVariable: 'USER', passwordVariable: 'PASSWORD')]) { + configFileProvider([configFile(fileId: 'maven-settings', variable: 'MAVEN_SETTINGS')]) { + 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' + } + } + } + } + } + + stage ('OWASP Dependency-Check Vulnerabilities') { + steps { + dependencyCheck additionalArguments: ''' + -o "./" + -s "./" + -f "ALL" + -d /dependency-check-data + --suppression dependency-check-supressions.xml + --disableKnownExploited + --disableArchive + --prettyPrint''', odcInstallation: 'dependency-check-owasp' + + dependencyCheckPublisher pattern: 'dependency-check-report.xml' + } + } + + stage('Sonar Checks') { + when { + branch 'master' + } + steps { + 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 package sonar:sonar -Dsonar.coverage.jacoco.xmlReportPaths=${env.WORKSPACE}/user-manager-server/target/jacoco-report/jacoco.xml" + } + } catch (Exception e) { + unstable("SonarQube failed") + } + } + } + } + } + } + + stage('Tag and Push Docker image') { + steps { + script { + FAILED_STAGE = env.STAGE_NAME + IMAGE_TAG = generateImageTag() + + tagAndPushDockerImage(IMAGE_TAG) + + if (env.BRANCH_NAME == 'master') { + tagAndPushDockerImage('snapshot-latest') + } + else if (env.BRANCH_NAME == 'release') { + tagAndPushDockerImage('latest') + } + } + } + } + + stage('Test, build and deploy Helm Chart') { + steps { + script { + FAILED_STAGE=env.STAGE_NAME + HELM_CHART_VERSION = generateHelmChartVersion() + + dir('src/main/helm') { + sh "helm lint -f ../../test/unit-values.yaml" + + sh "helm unittest -f '../../test/helm/*.yaml' -v '../../test/unit-values.yaml' ." + + sh "helm package --version=${HELM_CHART_VERSION} ." + + deployHelmChart(HELM_CHART_VERSION) + } + } + } + } + + stage('Rollout Dev UserManager') { + when { + branch 'master' + } + steps { + script { + FAILED_STAGE = env.STAGE_NAME + + cloneGitopsRepo() + + setNewDevUserManagerVersion() + + pushDevGitopsRepo() + } + } + } + + stage('Trigger Test rollout') { + when { + branch 'release' + } + + steps { + script { + FAILED_STAGE = env.STAGE_NAME + + cloneGitopsRepo() + + setNewTestUserManagerVersion() + + pushTestGitopsRepo() + } + } + } + } -// post { -// failure { -// script { -// if (env.BRANCH_NAME == 'master' || env.BRANCH_NAME == 'release') { -// sendFailureMessage() -// } -// } -// } -// } + post { + failure { + script { + if (env.BRANCH_NAME == 'master' || env.BRANCH_NAME == 'release') { + sendFailureMessage() + } + } + } + } } Void deployHelmChart(String helmChartVersion) { diff --git a/pom.xml b/pom.xml index 88c2b91919109086f9bfb92ca17bb3df8f31c4cc..d6c49622a22ea0a53bda35ffe1fd4ed7a09e77b5 100644 --- a/pom.xml +++ b/pom.xml @@ -29,7 +29,7 @@ <modelVersion>4.0.0</modelVersion> <groupId>de.itvsh.kop</groupId> <artifactId>user-manager</artifactId> - <version>1.10.0</version> + <version>1.11.0-SNAPSHOT</version> <name>User Manager Parent</name> <packaging>pom</packaging> diff --git a/user-manager-interface/pom.xml b/user-manager-interface/pom.xml index aedd29770fa77e88cb42382edbd1045785ad391b..bf585810bd6d0d0e528aaaafe7093fd4df8dd33c 100644 --- a/user-manager-interface/pom.xml +++ b/user-manager-interface/pom.xml @@ -36,7 +36,7 @@ <groupId>de.itvsh.kop.user</groupId> <artifactId>user-manager-interface</artifactId> - <version>1.10.0</version> + <version>1.11.0-SNAPSHOT</version> <name>UserManager Interface</name> <description>gRPC Interface for User Manager</description> diff --git a/user-manager-server/pom.xml b/user-manager-server/pom.xml index 3d50745ed079c752c33ef646e3e0d2e99a809f2e..902aebbc8f876a515e713a6785eb97178bf78cc4 100644 --- a/user-manager-server/pom.xml +++ b/user-manager-server/pom.xml @@ -36,7 +36,7 @@ <groupId>de.itvsh.kop.user</groupId> <artifactId>user-manager-server</artifactId> - <version>1.10.0</version> + <version>1.11.0-SNAPSHOT</version> <name>User Manager</name> <properties>