diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index aa30504896e7c529ab42cb2c9d0717b38c5187f2..93f2d5c65360f0906260119f5c66020403408d6f 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -25,7 +25,6 @@ build:
     - docker push $CI_REGISTRY_IMAGE/$VERSION:$TAG
   rules:
     - if: $CI_COMMIT_BRANCH == "main"
-    - if: $CI_COMMIT_TAG != null
 
 desktop_extension:package:pre-release:
   stage: build
@@ -77,8 +76,7 @@ desktop_extension:package:release:
   script:
     - ./build-desktop.sh prod
   rules:
-    - if: $CI_COMMIT_BRANCH == "master"
-    - if: $CI_COMMIT_TAG
+    - if: $CI_COMMIT_BRANCH == "master" && $CI_COMMIT_TAG =~ /^(?:\d+\.){2}(?:\d+)$/
 
 desktop_extension:publish:release:
   stage: publish
@@ -95,5 +93,4 @@ desktop_extension:publish:release:
     - cd $EXTENSION_PATH
     - npm run vsce-publish -- -p $VSCODE_EXTENSION_MARKET_PLACE_ACCESS_TOKEN
   rules:
-    - if: $CI_COMMIT_BRANCH == "master"
-    - if: $CI_COMMIT_TAG
+    - if: $CI_COMMIT_BRANCH == "master" && $CI_COMMIT_TAG =~ /^(?:\d+\.){2}(?:\d+)$/