diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 0fedd98d4f39cf23344725c17484197a77b729e8..d2fb35ca1fa94e695e24bf6fd2be0c2fb76c3054 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,32 +1,3 @@
-stages:
-  - build
-
-Docker:
-  # Use the official docker image.
-  image: gitlab.jonasled.de/jonasled/buildx-docker:latest
-  stage: build
-  needs: []
-  services:
-    - docker:dind
-  before_script:
-    - docker context create build
-    - docker buildx create build --use
-    - docker run --privileged --rm tonistiigi/binfmt --install all
-    - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
-    - apk add jq
-  # Default branch leaves tagempty (= latest tag)
-  # All other branches are tagged with the escaped branch name (commit ref slug)
-  script:
-    - |
-      if [[ "$CI_COMMIT_BRANCH" == "$CI_DEFAULT_BRANCH" ]]; then
-        tag="latest"
-      else
-        tag="$CI_COMMIT_REF_SLUG"
-      fi
-    - docker buildx build --platform linux/amd64 --push --provenance false --tag "$CI_REGISTRY_IMAGE:${tag}" .
-    - export IMAGE_HASH=$(docker buildx imagetools inspect "$CI_REGISTRY_IMAGE:${tag}" --format "{{json .Manifest}}" | jq .digest)
-    - "echo \"Image Hash: $IMAGE_HASH\""
-    - echo "$IMAGE_HASH" >> image-hash.txt
-  artifacts:
-    paths:
-      - image-hash.txt
+include:
+- project: 'infra/ci'
+  file: '/pipelines/docker.yml'