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