From 183713d9902d8f1e0ee5d3749ff5157e3b2f2eed Mon Sep 17 00:00:00 2001
From: kay_jointech <kay@jointech.org>
Date: Sun, 16 Apr 2023 17:46:49 +0200
Subject: [PATCH] FEAT(gitlab-ci):Push from Feature Branch

If a Merge Request on a feature Branch is created,
the Image will pushed to gitlab registry
---
 .gitlab-ci.yml | 26 +++++++++++++++++++-------
 1 file changed, 19 insertions(+), 7 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 26ee826..143658f 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
 
-- 
GitLab