diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 4246b0809d3c4b81368d7c18f9f0467cf7da10fd..da53fe10d2b582492c358883b2b9ef738133c501 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -48,6 +48,17 @@ verify:
     - export MERGE_REQUEST_TAG="MR-${CI_MERGE_REQUEST_IID}-${PROJECT_VERSION}"
     - export NEXUS_IMAGE_PREFIX="docker.ozg-sh.de/${PROJECT_ARTIFACTID}"
 
+.publish-helm-chart:
+  variables:
+    - HELMCHART_NAME: Intelliform-Adapter
+    - NEXUS_HELM_URL: https://nexus.ozg-sh.de/service/rest/v1/components?repository=
+  script:
+    - ./run_helm_test.sh
+    - cd 'src/main/helm'
+    - sh "helm package --version=${HELM_CHART_VERSION} ."
+    - helm package helm-chart
+    - curl -u ${NEXUS_USER}:${NEXUS_PASSWORD} ${NEXUS_HELM_URL}${HELM_REPO} -F file=@'''+${HELMCHART_NAME}+'''-'''+${HELM_CHART_VERSION}+'''.tgz
+
 # Merge request jobs
 push-merge-request-image-gitlab:
   stage: publish
@@ -86,6 +97,16 @@ push-snapshot-image-nexus:
   only:
     - main
 
+push-snapshot-helm-chart-nexus:
+  stage: publish
+  extends: .publish-helm-chart
+  variables:
+    HELM_REPO: ozg-base-apps-snapshot
+  before_script:
+    - export HELM_CHART_VERSION="$(mvn help:evaluate -Dexpression=project.version -q -DforceStdout $MAVEN_CLI_OPTS)-${CI_COMMIT_BRANCH}-${CI_COMMIT_SHORT_SHA}"
+  only:
+    - main
+
 # Release jobs
 push-release-image-gitlab:
   stage: publish
@@ -106,3 +127,13 @@ push-release-image-nexus:
     - mvn deploy -Pnexus-deploy $MAVEN_DEPLOY_CLI_OPTS $MAVEN_CLI_OPTS
   rules:
     - if: $CI_COMMIT_TAG
+
+push-release-helm-chart-nexus:
+  stage: publish
+  extends: .publish-helm-chart
+  variables:
+    HELM_REPO: ozg-base-apps
+  before_script:
+    - export HELM_CHART_VERSION=$CI_COMMIT_TAG
+  rules:
+    - if: $CI_COMMIT_TAG