diff --git a/Jenkinsfile b/Jenkinsfile index 4b85c1d04a2e844fa5421f4d7f564bf5f1bcf301..cb2d1ae4cdac5ba31d3dd1ac064dd2a5151f9efe 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -141,6 +141,26 @@ pipeline { } } + stage('Test, build and deploy Helm Chart') { + steps { + container('k8s') { + script { + FAILED_STAGE=env.STAGE_NAME + HELMCH_CHART_VERSION = generateHelmChartVersion() + + setHelmChartVersion(HELMCH_CHART_VERSION) + + sh "helm lint -f user-manager-server/src/main/helm/test-values.yaml user-manager-server/src/main/helm" + sh "helm unittest -f '../../test/helm/*.yaml' user-manager-server/src/main/helm" + + sh "helm package user-manager-server/src/main/helm" + + deployHelmChart(HELMCH_CHART_VERSION) + } + } + } + } + stage('Rollout Dev UserManager') { when { branch 'master' @@ -189,6 +209,43 @@ 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 + } + 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 + } + + if (result != '') { + error(result) + } + } +} + +Void setHelmChartVersion(String helmChartVersion) { + def helmChartPath = 'user-manager-server/src/main/helm/Chart.yaml' + def chart = readYaml file: helmChartPath + + chart.version = helmChartVersion + + writeYaml file: helmChartPath, data: chart, overwrite: true +} + +String generateHelmChartVersion() { + def chartVersion = getPomVersion('pom.xml') + + if (env.BRANCH_NAME == 'master') { + chartVersion += "-${env.GIT_COMMIT.take(7)}" + } + else if (env.BRANCH_NAME != 'release') { + chartVersion += "-${env.BRANCH_NAME}" + } + + return chartVersion +} + Void sendFailureMessage() { def room = '' def data = """{"msgtype":"m.text", \ @@ -223,6 +280,7 @@ Void setNewProvisioningVersion(String environment) { def envVersions = readYaml file: envFile envVersions.versions.user_manager.image.tag = IMAGE_TAG + envVersions.charts.user_manager.version = HELMCH_CHART_VERSION writeYaml file: envFile, data: envVersions, overwrite: true }