diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index e3752185fe60c8124117b00168e53bf1d4b03b63..552fdc5397fe4250663c5bae9120854589471536 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -21,6 +21,7 @@ stages:
   - build
   - test
   - publish
+  - gitops
 
 build:
   stage: build
@@ -88,6 +89,28 @@ push-snapshot-image-nexus:
   only:
     - main
 
+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