diff --git a/Jenkinsfile b/Jenkinsfile index c3b703a317c13690030c2020cada7a8935f4d8b6..fe54c4d20d3528013cc0ef8fc5ca8481a6e4270a 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -183,6 +183,24 @@ pipeline { } } } + + stage('Test, build and deploy Helm Chart') { + steps { + container('k8s') { + FAILED_GOOFY_STAGE=env.STAGE_NAME + def helmChartVersion = generateImageTag() + setHelmChartVersion(helmChartVersion) + + sh "helm lint -f goofy-server/src/main/helm/test-values.yaml goofy-server/src/main/helm" + sh "helm unittest -f '../../test/helm/*.yaml' goofy-server/src/main/helm" + + sh "helm package goofy-server/src/main/helm" + + deployHelmChart(helmChartVersion) + } + } + } + stage('Trigger Dev rollout') { when { branch 'master' @@ -297,6 +315,33 @@ pipeline { } } +Void deployHelmChart(String helmChartVersion) { + NEXUS_URL = 'http://nexus.dev-tools:8081/service/rest/v1/components?repository=ozg-base-apps' + NEXUS_SNAPSHOT_URL = 'http://nexus.dev-tools:8081/service/rest/v1/components?repository=ozg-base-apps-snapshot' + + withCredentials([usernamePassword(credentialsId: 'jenkins-nexus-login', usernameVariable: 'USERNAME', passwordVariable: 'PASSWORD')]){ + if (env.BRANCH_NAME == 'release') { + result = sh script: '''curl -u $USERNAME:$PASSWORD $NEXUS_URL -F file=@goofy-'''+helmChartVersion+'''.tgz''', returnStdout: true + } + else { + result = sh script: '''curl -u $USERNAME:$PASSWORD $NEXUS_SNAPSHOT_URL -F file=@goofy-'''+helmChartVersion+'''.tgz''', returnStdout: true + } + + if (result != '') { + error(result) + } + } +} + +Void setHelmChartVersion(String helmChartVersion) { + def helmChartPath = 'goofy-server/src/main/helm/Chart.yaml' + def chart = readYaml file: helmChartPath + + chart.version = helmChartVersion + + writeYaml file: helmChartPath, data: chart, overwrite: true +} + Void tagAndPushDockerImage(String newTag){ container("docker") { withCredentials([usernamePassword(credentialsId: 'jenkins-docker-login', usernameVariable: 'USER', passwordVariable: 'PASSWORD')]) { @@ -407,6 +452,7 @@ Void editEnvironemntVersion(String stage, String imageTag, Boolean isEa) { devVersions.values.pluto.put('env', ['overrideSpringProfiles': overrideSpringProfiles]) devVersions.versions.goofy.image.tag = imageTag + devVersions.charts.goofy.version = imageTag writeYaml file: editFile, data: devVersions, overwrite: true } @@ -734,6 +780,7 @@ Void setNewGoofyProvisioningVersion(String environment) { def envVersions = readYaml file: envFile envVersions.versions.goofy.image.tag = IMAGE_TAG + devVersions.charts.goofy.version = imageTag writeYaml file: envFile, data: envVersions, overwrite: true }