diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 0000000000000000000000000000000000000000..cdc00d151b141c6cd3da55fbef3452821917333c
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,32 @@
+stages:
+  - build
+
+build:
+  stage: build
+  image: harbor.pasteur.fr/kube-system/helm-kubectl:3.12.0
+  script:
+    - echo "Building helm chart"
+    - CHART_VERSION=$(helm show chart . | grep version | cut -d' ' -f2)
+    - CHART_NAME=$(helm show chart . | grep name | cut -d' ' -f2)
+    - echo $CHART_NAME
+    - echo $CHART_VERSION
+    - |
+      if [ "main" == "${CI_COMMIT_REF_SLUG}" ]; then
+        export CHANNEL="stable"
+      else
+        export CHANNEL="${CI_COMMIT_REF_SLUG}"
+      fi
+      echo $CHANNEL
+    - export CHART_RELEASE_NAME="${CHART_NAME}-${CHART_VERSION}.tgz"
+    - echo $CHART_RELEASE_NAME
+    - helm package .
+    - HTTP_CODE=$(curl -o /dev/null --silent -Iw '%{http_code}' "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/helm/${CHANNEL}/charts/${CHART_RELEASE_NAME}")
+    - |
+      if [ $HTTP_CODE == "200" ]; then
+        echo "Shouln't publish this version as version ${CHART_VERSION}:"
+        echo "It already is in the package registry, please increase its version number"
+        exit 5
+      else
+        echo "Version not already published, continuing publication process"
+      fi
+    - curl --request POST --user gitlab-ci-token:$CI_JOB_TOKEN --form "chart=@${CHART_RELEASE_NAME}" "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/helm/api/${CHANNEL}/charts"