diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 26ee82679f3940cdb90316557feb03f80bb98e7b..143658fedb89c3a2e59a0a13a4af0dd5622d5c12 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -97,22 +97,34 @@ docker-push:
   services:
     - docker:dind
   before_script:
-    # default repo is docker.io (aka docker hub)
-    - docker login -u "$DOCKER_ID" -p "$DOCKER_HUB_AUTH"
+    # on a feature branch will login to gitlab registry
+    # else to docker hub
+    # hint: feature branches must begin with "feat"
+    - |
+      if expr "$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME" : ^feat > /dev/null
+        then docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" "$CI_REGISTRY"
+      else docker login -u "$DOCKER_ID" -p "$DOCKER_HUB_AUTH"
+      fi
   script:
-    # every commit on main branch should build image as unstable
+    # every commit on main branch should build and push image as unstable
+    # elseif its a feature branch build and push to gitlab registry
     # else it is from a tag (enforced by gitlab-ci rules)
     # hint: tags are references independent of branches
+    # hint: feature branches must begin with "feat"
     - |
       if [ "$CI_COMMIT_BRANCH" == "$CI_DEFAULT_BRANCH" ]
         then docker build -t $AURA_IMAGE_NAME:unstable .
-        else docker build -t $AURA_IMAGE_NAME -t $AURA_IMAGE_NAME:$CI_COMMIT_TAG .
+        docker push "$AURA_IMAGE_NAME" --all-tag
+      elif expr "$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME" : ^feat > /dev/null
+        then docker build -t $AURA_IMAGE_NAME -t $CI_REGISTRY_IMAGE:$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME .
+        docker push $CI_REGISTRY_IMAGE:$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME
+      else docker build -t $AURA_IMAGE_NAME -t $AURA_IMAGE_NAME:$CI_COMMIT_TAG .
+      docker push "$AURA_IMAGE_NAME" --all-tag
       fi
-    - docker push "$AURA_IMAGE_NAME" --all-tags
   rules:
     - *release-rules
-    # every commit on master/main branch should trigger a push to docker-hub as unstable without a release
-    - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
+    # every commit on master/main or feature branch should trigger a push
+    - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH || $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME =~ /^feat/
       exists:
         - Dockerfile