diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 9c035e8d2e7d495c71f338cb30e27c15180677e7..048e1663ba0e011f121b0480fa895cbc5a65b65a 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -81,16 +81,36 @@ publishgit-do:
     - git push gith $CI_COMMIT_REF_NAME
 
 
-# This should be an automatic push of the docker image into gitLab container repository
-# Currently not working due to docker login failing because of firewall issues
+# This is an automatic push of the docker image into gitLab container repository
 transfer_image:
+  stage: build
+  image: docker:19.03.12
+  services:
+    - docker:19.03.12-dind
+  variables:
+    IMAGE_COMMIT_TAG: $CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA
+  script:
+    - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
+    - docker build --no-cache=true --pull -f ./apiserver/Dockerfile -t $IMAGE_COMMIT_TAG .
+    - docker push $IMAGE_COMMIT_TAG
+
+tag_release:
   stage: publish
+  needs: ["transfer_image"]
   image: docker:19.03.12
   services:
     - docker:19.03.12-dind
   variables:
-    IMAGE_TAG: $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG
+    IMAGE_LATEST_TAG: $CI_REGISTRY_IMAGE:latest
+    IMAGE_STABLE_TAG: $CI_REGISTRY_IMAGE:$CI_COMMIT_TAG
+    IMAGE_COMMIT_TAG: $CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA
+  only:
+    - tags
+  tags: [stable]
   script:
     - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
-    - docker build --no-cache=true --pull -f ./apiserver/Dockerfile -t $IMAGE_TAG .
-    - docker push $IMAGE_TAG
+    - docker pull $IMAGE_COMMIT_TAG
+    - docker tag $IMAGE_COMMIT_TAG $IMAGE_STABLE_TAG
+    - docker tag $IMAGE_COMMIT_TAG $IMAGE_LATEST_TAG
+    - docker push $IMAGE_STABLE_TAG
+    - docker push $IMAGE_LATEST_TAG