diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 05ef064c62b8c32b7fbceab0c6582d7eaf32b7ba..dfb8572be334550e8b95b0cd0045e40029fbd924 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -18,33 +18,30 @@ build:
       --dockerfile "${CI_PROJECT_DIR}/Dockerfile"
       --destination "${CI_REGISTRY_IMAGE}:${CI_COMMIT_TAG}"
 
-tag-latest:
+
+.tag-template:
   stage: tag
   image: docker:24.0.7
   rules:
     - if: $CI_COMMIT_TAG
       when: manual
+  before_script:
+  - mkdir -p $HOME/.docker
+  - echo "{\"auths\":{\"$CI_REGISTRY\":{\"auth\":\"$(printf "%s:%s" "${CI_REGISTRY_USER}" "${CI_REGISTRY_PASSWORD}" | base64 | tr -d '\n')\"}}}" > $HOME/.docker/config.json
+
+tag-latest:
+  extends: .tag-template
   script:
   - docker buildx imagetools create --tag $CI_REGISTRY_IMAGE:latest $CI_REGISTRY_IMAGE:$CI_COMMIT_TAG 
 
 tag-major:
-  stage: tag
-  image: docker:24.0.7
-  rules:
-    - if: $CI_COMMIT_TAG
-      when: manual
+  extends: .tag-template
   script:
   - export newtag=$(echo $CI_COMMIT_TAG | cut -d. -f 1)
   - docker buildx imagetools create --tag $CI_REGISTRY_IMAGE:$newtag $CI_REGISTRY_IMAGE:$CI_COMMIT_TAG 
 
 tag-minor:
-  stage: tag
-  image: docker:24.0.7
-  rules:
-    - if: $CI_COMMIT_TAG
-      when: manual
+  extends: .tag-template
   script:
-  - mkdir -p $HOME/.docker
-  - echo "{\"auths\":{\"$CI_REGISTRY\":{\"auth\":\"$(printf "%s:%s" "${CI_REGISTRY_USER}" "${CI_REGISTRY_PASSWORD}" | base64 | tr -d '\n')\"}}}" > $HOME/.docker/config.json
   - export newtag=$(echo $CI_COMMIT_TAG | cut -d. -f 1-2)
   - docker buildx imagetools create --tag $CI_REGISTRY_IMAGE:$newtag $CI_REGISTRY_IMAGE:$CI_COMMIT_TAG