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