diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 53c06dee24cfc3a4008750904fc561e6abe0bb00..abc0d46125fad7b9d88cb90446366c27a0e17ead 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -66,23 +66,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:unstable + 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:$CI_COMMIT_TAG fi - # TODO: maybe isolate docker build and docker push - - 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