diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 42a5ea6675fdc08b224c5274eaed76e8a608aa31..8e3d46a6c27527484c029bbe1e0f07974a75d3d5 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -19,7 +19,7 @@ cache:
 
 stages:
   - build
-  - deploy
+  - publish
 
 verify:
   stage: build
@@ -31,16 +31,28 @@ verify:
     paths:
       - target/*.jar
 
-deploy-gitlab:
-  stage: deploy
+snapshot-gitlab:
+  stage: publish
   script:
-    - echo "mvn deploy -Pgitlab-deploy $MAVEN_DEPLOY_CLI_OPTS $MAVEN_CLI_OPTS"
     - mvn deploy -Pgitlab-deploy $MAVEN_DEPLOY_CLI_OPTS $MAVEN_CLI_OPTS
 
-
-deploy-nexus:
-  stage: deploy
+snapshot-nexus:
+  stage: publish
   script:
-    - echo "mvn deploy -Pnexus-deploy $MAVEN_DEPLOY_CLI_OPTS $MAVEN_CLI_OPTS"
     - mvn deploy -Pnexus-deploy $MAVEN_DEPLOY_CLI_OPTS $MAVEN_CLI_OPTS
 
+release-gitlab:
+  stage: publish
+  script:
+    - mvn versions:set -DnewVersion=${CI_COMMIT_TAG}
+    - mvn deploy -Pgitlab-deploy $MAVEN_DEPLOY_CLI_OPTS $MAVEN_CLI_OPTS
+  rules:
+    - if: $CI_COMMIT_TAG
+
+release-nexus:
+  stage: publish
+  script:
+    - mvn versions:set -DnewVersion=${CI_COMMIT_TAG}
+    - mvn mvn deploy -Pnexus-deploy $MAVEN_DEPLOY_CLI_OPTS $MAVEN_CLI_OPTS
+  rules:
+    - if: $CI_COMMIT_TAG