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
     }