diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index c42268ecaaca159b561977baf92095ac475a473b..a8f84c210c236bc8fe3ee0876870c70cd08d9a1a 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -31,55 +31,45 @@ docker_build:
   tags:
     - docker
 
-docker_publish_production:
+docker_publish_alpha:
   stage: publish
   image: docker:latest
   services:
   - docker:dind
-  variables:
-    CI_DEBUG_TRACE: "true"
   script: |
     test "${DOCKER_AUTH_CONFIG}" == "" && echo "docker-config does not exists, aborting!" && false
     mkdir -p ~/.docker && echo "$DOCKER_AUTH_CONFIG" >~/.docker/config.json
-    export version=`expr ${CI_COMMIT_TAG} ':' 'release/\(.\+\)'`
-    major_version=`expr ${version} ':' '\([^.]\+\)'`
-    minor_version=`expr ${version} ':' '[^.]\+\.\([^.]\+\)'`
-    patch_version=`expr ${version} ':' '[^.]\+\.[^.]\+\.\(.\+\)'`
     docker load --input=image.tar.gz
-    docker tag image ${image_name}:${version}
-    docker push ${image_name}:${version}
-    for tag in "latest" "${major_version}" "${major_version}.${minor_version}"; do
-      docker tag ${image_name}:${version} ${image_name}:${tag}
-      docker push ${image_name}:${tag}
-    done
+    docker tag image ${image_name}:alpha-${CI_COMMIT_REF_NAME}
+    docker push ${image_name}:alpha-${CI_COMMIT_REF_NAME}
   dependencies:
   - docker_build
   tags:
     - docker
-  except:
-  - branches
   only:
-  - /^release\/.*/
+  - /^[0-9]+-/
 
-docker_publish_alpha:
+docker_publish_staging:
   stage: publish
   image: docker:latest
   services:
   - docker:dind
+  variables:
+    CI_DEBUG_TRACE: "true"
   script: |
     test "${DOCKER_AUTH_CONFIG}" == "" && echo "docker-config does not exists, aborting!" && false
     mkdir -p ~/.docker && echo "$DOCKER_AUTH_CONFIG" >~/.docker/config.json
     docker load --input=image.tar.gz
-    docker tag image ${image_name}:alpha-${CI_COMMIT_REF_NAME}
-    docker push ${image_name}:alpha-${CI_COMMIT_REF_NAME}
+    docker tag image ${image_name}:staging
+    docker push ${image_name}:staging
   dependencies:
   - docker_build
   tags:
     - docker
   only:
-  - /^[0-9]+-/
+  - master
 
-docker_publish_staging:
+docker_publish_production:
   stage: publish
   image: docker:latest
   services:
@@ -89,12 +79,20 @@ docker_publish_staging:
   script: |
     test "${DOCKER_AUTH_CONFIG}" == "" && echo "docker-config does not exists, aborting!" && false
     mkdir -p ~/.docker && echo "$DOCKER_AUTH_CONFIG" >~/.docker/config.json
+    version=`expr ${CI_COMMIT_TAG} ':' 'release/\(.\+\)'`
+    major_version=`expr ${version} ':' '\([^.]\+\)'`
+    minor_version=`expr ${version} ':' '[^.]\+\.\([^.]\+\)'`
+    patch_version=`expr ${version} ':' '[^.]\+\.[^.]\+\.\(.\+\)'`
     docker load --input=image.tar.gz
-    docker tag image ${image_name}:staging
-    docker push ${image_name}:staging
+    for tag in "latest" "${major_version}" "${major_version}.${minor_version}" "${version}"; do
+      docker tag image ${image_name}:${tag}
+      docker push ${image_name}:${tag}
+    done
   dependencies:
   - docker_build
   tags:
     - docker
+  except:
+  - branches
   only:
-  - master
+  - /^release\/.*/
\ No newline at end of file