diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 4fbf740c6f0cdc053061656b816d5faf09937578..23374de123ff8fcead586631b4ed6004124771d1 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -21,6 +21,7 @@ stages:
   - build
   - test
   - publish
+  - gitops
 
 build:
   stage: build
@@ -140,6 +141,28 @@ push-snapshot-helm-nexus:
     paths:
       - "*.tgz"
 
+gitops-snapshot:
+  stage: gitops
+  variables:
+    GITOPS_ENVIRONMENT: dev
+    VALUES_FILE_NAME: afm-adapter-values.yaml
+    VALUES_FILE: ${GITOPS_ENVIRONMENT}/application/values/${VALUES_FILE_NAME}
+  before_script:
+    - apk add --no-cache git yq  # yq-go in newer versions of alpine (from 3.20 on)
+    - git config --global user.name "${GITEA_USER}"
+    - git config --global user.email "${GITEA_USER_EMAIL}"
+    - !reference [.get-version, before_script]
+  script:
+    - git clone https://${GITEA_USER}:${GITEA_TOKEN}@git.ozg-sh.de/ozgcloud-devops/gitops.git
+    - cd gitops
+    - yq -i ".afm_adapter.image.tag = \"${SNAPSHOT_TAG}-${CI_COMMIT_SHORT_SHA}\"" ${VALUES_FILE}
+    - yq -i ".afm_adapter.helm.version = \"${PROJECT_VERSION}-main-${CI_COMMIT_SHORT_SHA}\"" ${VALUES_FILE}
+    - git add ${VALUES_FILE}
+    - git commit -m "code-sh GitLab CI rollout ${environment} ${PROJECT_ARTIFACTID} version ${SNAPSHOT_TAG}-${CI_COMMIT_SHORT_SHA}"
+    - git push https://${GITEA_USER}:${GITEA_TOKEN}@git.ozg-sh.de/ozgcloud-devops/gitops.git
+  only:
+   - main
+
 # Release jobs
 push-release-image-gitlab:
   stage: publish