diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index ced23cb30a6dcdbd3d654368061c1340c094dcda..a06946628bdc8b74f9d12107be82f64907847877 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -52,10 +52,11 @@ test:compile-generated:
 npm:publish:
   extends: .nodejs
   stage: publish
-  only:
-    refs:
-      - tags
+  rules:
+    - if: '$CI_COMMIT_TAG && $CI_COMMIT_REF_PROTECTED == "true"'
   before_script:
+    - npm install -g npm
     - npm config set '//registry.npmjs.org/:_authToken' "$NPM_AUTH_TOKEN"
   script:
+    - npm version --no-git-tag-version "$CI_COMMIT_TAG"
     - npm publish --access=public .