diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index cdb1d73bf186c9608bcc6c88a193765ee52f5835..3991fc0e72d40361a4bd6d71d2af963e050f56e5 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -7,7 +7,6 @@ workflow:
   rules:
     - if: $CI_MERGE_REQUEST_IID
     - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
-    - if: $CI_COMMIT_TAG
 
 stages:
   - test
@@ -55,17 +54,20 @@ build container image:
     name: gcr.io/kaniko-project/executor:debug
     entrypoint: [""]
   script:
-    - "[[ -n $CI_COMMIT_TAG ]] && export version=$CI_COMMIT_TAG || export version=$CI_COMMIT_SHORT_SHA"
+    # always succeed and don't print error message
+    - tag=$(git tag --contains $CI_COMMIT_SHORT_SHA 2>&1) || true
+    # use tag for version if not empty; else commit sha
+    - "[[ -n $tag ]] && export version=$tag || export version=$CI_COMMIT_SHORT_SHA"
     - mkdir -p /kaniko/.docker
     - echo "{\"auths\":{\"$CI_REGISTRY\":{\"auth\":\"$(echo -n ${CI_REGISTRY_USER}:${CI_REGISTRY_PASSWORD} | base64 | tr -d '\n')\"},\"$harbor_registry\":{\"auth\":\"$HARBOR_ROBOT_TOKEN64\"}}}" > /kaniko/.docker/config.json
     - /kaniko/executor
       --context $CI_PROJECT_DIR
       --dockerfile $CI_PROJECT_DIR/Dockerfile
       --build-arg build_date=$(date -u +'%Y-%m-%dT%H:%M:%SZ')
-      --build-arg vcs_ref=${version}
+      --build-arg vcs_ref=${CI_COMMIT_SHORT_SHA}
       --build-arg version=${version}
       --destination $CI_REGISTRY_IMAGE/repdav:$version
       --destination $harbor_registry/$harbor_repo/repdav:$version
   rules:
+    - if: $CI_MERGE_REQUEST_IID
     - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
-    - if: $CI_COMMIT_TAG