From a90ccb81772e295cebe89d7a9c32ab700e19884d Mon Sep 17 00:00:00 2001 From: Jon Date: Wed, 17 May 2023 15:41:09 +0930 Subject: [PATCH] refactor(docker): move docker jobs to their own file !24 --- docker/build.gitlab-ci.yaml | 102 +++++++++++++++ docker/publish.gitlab-ci.yaml | 107 +++++++++++++++ template/docker-image.gitlab-ci.yaml | 187 +-------------------------- 3 files changed, 211 insertions(+), 185 deletions(-) create mode 100644 docker/build.gitlab-ci.yaml create mode 100644 docker/publish.gitlab-ci.yaml diff --git a/docker/build.gitlab-ci.yaml b/docker/build.gitlab-ci.yaml new file mode 100644 index 0000000..2bc0be4 --- /dev/null +++ b/docker/build.gitlab-ci.yaml @@ -0,0 +1,102 @@ +--- + +variables: + # Available platforms: linux/amd64, linux/amd64/v2, linux/amd64/v3, linux/arm64, linux/riscv64, linux/ppc64, linux/ppc64le, linux/s390x, linux/386, linux/mips64le, linux/mips64, linux/arm/v7, linux/arm/v6 + # DOCKER_IMAGE_BUILD_TARGET_PLATFORMS: "linux/amd64,linux/arm64,linux/arm/v7" + DOCKER_IMAGE_BUILD_NAME: $CI_PROJECT_NAME + DOCKER_IMAGE_BUILD_REGISTRY: $CI_REGISTRY_IMAGE + DOCKER_IMAGE_BUILD_TAG: $CI_COMMIT_SHA + + # DOCKER_IMAGE_PUBLISH_NAME: $CI_PROJECT_NAME + # DOCKER_IMAGE_PUBLISH_REGISTRY: docker.io/nofusscomputing + # DOCKER_IMAGE_PUBLISH_URL: https://hub.docker.com/r/nofusscomputing/$DOCKER_IMAGE_PUBLISH_NAME + # JOB_STOP_CONVENTIONAL_COMMITS: 'any_value' + # JOB_STOP_GIT_PUSH_MIRROR: 'any_value' + # GIT_SYNC_URL: "https://$GITHUB_USERNAME_ROBOT:$GITHUB_TOKEN_ROBOT@github.com/NoFussComputing/config.git" # Must be defined for job to run + # JOB_STOP_GITLAB_RELEASE: 'any value' + + +.build_docker_container: + stage: build + image: nofusscomputing/docker-buildx-qemu:dev + services: + - name: docker:23-dind + entrypoint: ["env", "-u", "DOCKER_HOST"] + command: ["dockerd-entrypoint.sh"] + variables: + DOCKER_HOST: tcp://docker:2375/ + DOCKER_DRIVER: overlay2 + DOCKER_DOCKERFILE: dockerfile + # See https://github.com/docker-library/docker/pull/166 + DOCKER_TLS_CERTDIR: "" + before_script: + - if [ "0$JOB_ROOT_DIR" == "0" ]; then ROOT_DIR=gitlab-ci; else ROOT_DIR=$JOB_ROOT_DIR ; fi + - echo "[DEBUG] ROOT_DIR[$ROOT_DIR]" + - docker info + - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY + #- pip3 install -r gitlab-ci/gitlab_release/requirements.txt + - pip3 install setuptools wheel + - pip install -r $ROOT_DIR/conventional_commits/requirements.txt + - pip3 install gitlab-ci/gitlab_release/python-module/cz_nfc/. + - update-binfmts --enable # Important: Ensures execution of other binary formats is enabled in the kernel + - docker buildx create --driver=docker-container --driver-opt image=moby/buildkit:v0.11.6 --use + - docker buildx inspect --bootstrap + + + # --label org.opencontainers.image.url="$CI_PROJECT_URL/-/releases/$(cz -n cz_nfc version --project)" \ + # --label org.opencontainers.image.version="$(cz -n cz_nfc version --project)" \ + script: | + + if [ "0$DOCKER_IMAGE_BUILD_TARGET_PLATFORMS" != "0" ]; then + + echo "[DEBUG] building multiarch/specified arch image"; + + docker buildx build --platform=$DOCKER_IMAGE_BUILD_TARGET_PLATFORMS . \ + --label org.opencontainers.image.created="$(date '+%Y-%m-%d %H:%M:%S%:z')" \ + --label org.opencontainers.image.documentation="$CI_PROJECT_URL" \ + --label org.opencontainers.image.source="$CI_PROJECT_URL" \ + --label org.opencontainers.image.revision="$CI_COMMIT_SHA" \ + --no-cache \ + --push \ + --file $DOCKER_DOCKERFILE \ + --tag $DOCKER_IMAGE_BUILD_REGISTRY/$DOCKER_IMAGE_BUILD_NAME:$DOCKER_IMAGE_BUILD_TAG; + + docker buildx imagetools inspect $DOCKER_IMAGE_BUILD_REGISTRY/$DOCKER_IMAGE_BUILD_NAME:$DOCKER_IMAGE_BUILD_TAG; + + # during docker multi platform build there are >=3 additional unknown images added to gitlab container registry. cleanup + + DOCKER_MULTI_ARCH_IMAGES=$(docker buildx imagetools inspect "$DOCKER_IMAGE_BUILD_REGISTRY/$DOCKER_IMAGE_BUILD_NAME:$DOCKER_IMAGE_BUILD_TAG" --format "{{ range .Manifest.Manifests }}{{ if ne (print .Platform) \"&{unknown unknown [] }\" }}$DOCKER_IMAGE_BUILD_REGISTRY/$DOCKER_IMAGE_BUILD_NAME:$DOCKER_IMAGE_BUILD_TAG@{{ println .Digest }}{{end}} {{end}}"); + + docker buildx imagetools create $DOCKER_MULTI_ARCH_IMAGES --tag $DOCKER_IMAGE_BUILD_REGISTRY/$DOCKER_IMAGE_BUILD_NAME:$DOCKER_IMAGE_BUILD_TAG; + + docker buildx imagetools inspect $DOCKER_IMAGE_BUILD_REGISTRY/$DOCKER_IMAGE_BUILD_NAME:$DOCKER_IMAGE_BUILD_TAG; + + else + + echo "[DEBUG] building image"; + + docker build . \ + --label org.opencontainers.image.created="$(date '+%Y-%m-%d %H:%M:%S%:z')" \ + --label org.opencontainers.image.documentation="$CI_PROJECT_URL" \ + --label org.opencontainers.image.source="$CI_PROJECT_URL" \ + --label org.opencontainers.image.url="$CI_PROJECT_URL/-/releases/$(cz -n cz_nfc version --project)" \ + --label org.opencontainers.image.version="$(cz -n cz_nfc version --project)" \ + --label org.opencontainers.image.revision="$CI_COMMIT_SHA" \ + --no-cache \ + --file $DOCKER_DOCKERFILE \ + --tag $DOCKER_IMAGE_BUILD_REGISTRY/$DOCKER_IMAGE_BUILD_NAME:$DOCKER_IMAGE_BUILD_TAG; + + docker push $DOCKER_IMAGE_BUILD_REGISTRY/$DOCKER_IMAGE_BUILD_NAME:$DOCKER_IMAGE_BUILD_TAG; + + fi + rules: + - if: '$CI_PIPELINE_SOURCE == "merge_request_event"' + when: never + - if: $CI_COMMIT_TAG + when: on_success + - if: '$CI_COMMIT_BRANCH == "development"' + when: on_success + - if: '$CI_COMMIT_BRANCH != "master"' + when: always + - when: never + diff --git a/docker/publish.gitlab-ci.yaml b/docker/publish.gitlab-ci.yaml new file mode 100644 index 0000000..b2ab368 --- /dev/null +++ b/docker/publish.gitlab-ci.yaml @@ -0,0 +1,107 @@ +--- +# variables: +# # Available platforms: linux/amd64, linux/amd64/v2, linux/amd64/v3, linux/arm64, linux/riscv64, linux/ppc64, linux/ppc64le, linux/s390x, linux/386, linux/mips64le, linux/mips64, linux/arm/v7, linux/arm/v6 +# # DOCKER_IMAGE_BUILD_TARGET_PLATFORMS: "linux/amd64,linux/arm64,linux/arm/v7" +# DOCKER_IMAGE_BUILD_NAME: $CI_PROJECT_NAME +# DOCKER_IMAGE_BUILD_REGISTRY: $CI_REGISTRY_IMAGE +# DOCKER_IMAGE_BUILD_TAG: $CI_COMMIT_SHA + + +.publish-docker-hub: + stage: publish + image: docker:23-dind + services: + - docker:23-dind + before_script: + - | + + docker login $CI_REGISTRY -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD; + + if [ "0$DOCKER_IMAGE_BUILD_TARGET_PLATFORMS" != "0" ]; then + + for i in ${DOCKER_IMAGE_BUILD_TARGET_PLATFORMS//,/ } + do + + docker buildx imagetools inspect $DOCKER_IMAGE_BUILD_REGISTRY/$DOCKER_IMAGE_BUILD_NAME:$DOCKER_IMAGE_BUILD_TAG; + + #DOCKER_MULTI_ARCH_IMAGES=$(docker buildx imagetools inspect "$DOCKER_IMAGE_BUILD_REGISTRY/$DOCKER_IMAGE_BUILD_NAME:$DOCKER_IMAGE_BUILD_TAG" --format "{{ range .Manifest.Manifests }}{{ if ne (print .Platform) \"&{unknown unknown [] }\" }}$DOCKER_IMAGE_BUILD_REGISTRY/$DOCKER_IMAGE_BUILD_NAME:$DOCKER_IMAGE_BUILD_TAG@{{ println .Digest }}{{end}} {{end}}") + DOCKER_MULTI_ARCH_IMAGES=$(docker buildx imagetools inspect "$DOCKER_IMAGE_BUILD_REGISTRY/$DOCKER_IMAGE_BUILD_NAME:$DOCKER_IMAGE_BUILD_TAG" --format "{{ range .Manifest.Manifests }}$DOCKER_IMAGE_BUILD_REGISTRY/$DOCKER_IMAGE_BUILD_NAME:$DOCKER_IMAGE_BUILD_TAG@{{ println .Digest }} {{end}}") + + + echo "[DEBUG] DOCKER_MULTI_ARCH_IMAGES=$DOCKER_MULTI_ARCH_IMAGES"; + + done; + + else + + docker pull $DOCKER_IMAGE_BUILD_REGISTRY/$DOCKER_IMAGE_BUILD_NAME:$DOCKER_IMAGE_BUILD_TAG; + + fi + + #docker logout $CI_REGISTRY; # commented out to test if for private repo remaining logged in works to allow pulling image + + script: + - docker login docker.io -u $NFC_DOCKERHUB_USERNAME -p $NFC_DOCKERHUB_TOKEN + - docker image ls + - | + DOCKER_HUB_TAG=dev + + if [ "0$CI_COMMIT_TAG" != "0" ]; then + + DOCKER_HUB_TAG=latest + + if [ "0$CI_COMMIT_TAG" == *"rc"* ]; then + + DOCKER_HUB_TAG=dev + + fi + + fi + + echo "[DEBUG] DOCKER_IMAGE_PUBLISH_NAME=$DOCKER_IMAGE_PUBLISH_NAME"; + echo "[DEBUG] DOCKER_HUB_TAG=$DOCKER_HUB_TAG"; + + if [ "0$DOCKER_IMAGE_BUILD_TARGET_PLATFORMS" != "0" ]; then + + echo "[DEBUG] DOCKER_MULTI_ARCH_IMAGES=$DOCKER_MULTI_ARCH_IMAGES"; + + docker buildx imagetools create $DOCKER_MULTI_ARCH_IMAGES --tag $DOCKER_IMAGE_PUBLISH_REGISTRY/$DOCKER_IMAGE_PUBLISH_NAME:$DOCKER_HUB_TAG; + + if [ "0$CI_COMMIT_TAG" != "0" ]; then + + docker buildx imagetools create $DOCKER_MULTI_ARCH_IMAGES --tag $DOCKER_IMAGE_PUBLISH_REGISTRY/$DOCKER_IMAGE_PUBLISH_NAME:$CI_COMMIT_TAG; + + fi + + else + + docker image tag $DOCKER_IMAGE_BUILD_REGISTRY/$DOCKER_IMAGE_BUILD_NAME:$DOCKER_IMAGE_BUILD_TAG $DOCKER_IMAGE_PUBLISH_REGISTRY/$DOCKER_IMAGE_PUBLISH_NAME:$DOCKER_HUB_TAG; + + docker push $DOCKER_IMAGE_PUBLISH_REGISTRY/$DOCKER_IMAGE_PUBLISH_NAME:$DOCKER_HUB_TAG; + + if [ "0$CI_COMMIT_TAG" != "0" ]; then + + docker image tag $DOCKER_IMAGE_BUILD_NAME/$DOCKER_IMAGE_BUILD_REGISTRY:$DOCKER_IMAGE_BUILD_TAG $DOCKER_IMAGE_PUBLISH_REGISTRY/$DOCKER_IMAGE_PUBLISH_NAME:$CI_COMMIT_TAG; + + docker push $DOCKER_IMAGE_PUBLISH_REGISTRY/$DOCKER_IMAGE_PUBLISH_NAME:$CI_COMMIT_TAG; + + fi + + fi + + - docker logout docker.io + needs: [ "Docker Container" ] + environment: + name: DockerHub + url: $DOCKER_IMAGE_PUBLISH_URL + rules: + - if: '$CI_PIPELINE_SOURCE == "merge_request_event"' + when: never + - if: $CI_COMMIT_TAG + when: on_success + - if: '$CI_COMMIT_BRANCH == "development"' + when: on_success + - if: '$CI_COMMIT_BRANCH != "master"' + allow_failure: true + when: manual + - when: never diff --git a/template/docker-image.gitlab-ci.yaml b/template/docker-image.gitlab-ci.yaml index d90afaf..f4ba05d 100644 --- a/template/docker-image.gitlab-ci.yaml +++ b/template/docker-image.gitlab-ci.yaml @@ -4,6 +4,8 @@ include: - local: $JOB_ROOT_DIR/.gitlab-ci_common.yaml - local: $JOB_ROOT_DIR/conventional_commits/.gitlab-ci.yml + - local: $JOB_ROOT_DIR/docker/build.gitlab-ci.yaml + - local: $JOB_ROOT_DIR/docker/publish.gitlab-ci.yaml - local: $JOB_ROOT_DIR/git_push_mirror/.gitlab-ci.yml - local: $JOB_ROOT_DIR/gitlab_release/.gitlab-ci.yml @@ -24,191 +26,6 @@ variables: # JOB_STOP_GITLAB_RELEASE: 'any value' -.build_docker_container: - stage: build - image: nofusscomputing/docker-buildx-qemu:dev - services: - - name: docker:23-dind - entrypoint: ["env", "-u", "DOCKER_HOST"] - command: ["dockerd-entrypoint.sh"] - variables: - DOCKER_HOST: tcp://docker:2375/ - DOCKER_DRIVER: overlay2 - DOCKER_DOCKERFILE: dockerfile - # See https://github.com/docker-library/docker/pull/166 - DOCKER_TLS_CERTDIR: "" - before_script: - - if [ "0$JOB_ROOT_DIR" == "0" ]; then ROOT_DIR=gitlab-ci; else ROOT_DIR=$JOB_ROOT_DIR ; fi - - echo "[DEBUG] ROOT_DIR[$ROOT_DIR]" - - docker info - - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY - #- pip3 install -r gitlab-ci/gitlab_release/requirements.txt - - pip3 install setuptools wheel - - pip install -r $ROOT_DIR/conventional_commits/requirements.txt - - pip3 install gitlab-ci/gitlab_release/python-module/cz_nfc/. - - update-binfmts --enable # Important: Ensures execution of other binary formats is enabled in the kernel - - docker buildx create --driver=docker-container --driver-opt image=moby/buildkit:v0.11.6 --use - - docker buildx inspect --bootstrap - - - # --label org.opencontainers.image.url="$CI_PROJECT_URL/-/releases/$(cz -n cz_nfc version --project)" \ - # --label org.opencontainers.image.version="$(cz -n cz_nfc version --project)" \ - script: | - - if [ "0$DOCKER_IMAGE_BUILD_TARGET_PLATFORMS" != "0" ]; then - - echo "[DEBUG] building multiarch/specified arch image"; - - docker buildx build --platform=$DOCKER_IMAGE_BUILD_TARGET_PLATFORMS . \ - --label org.opencontainers.image.created="$(date '+%Y-%m-%d %H:%M:%S%:z')" \ - --label org.opencontainers.image.documentation="$CI_PROJECT_URL" \ - --label org.opencontainers.image.source="$CI_PROJECT_URL" \ - --label org.opencontainers.image.revision="$CI_COMMIT_SHA" \ - --no-cache \ - --push \ - --file $DOCKER_DOCKERFILE \ - --tag $DOCKER_IMAGE_BUILD_REGISTRY/$DOCKER_IMAGE_BUILD_NAME:$DOCKER_IMAGE_BUILD_TAG; - - docker buildx imagetools inspect $DOCKER_IMAGE_BUILD_REGISTRY/$DOCKER_IMAGE_BUILD_NAME:$DOCKER_IMAGE_BUILD_TAG; - - # during docker multi platform build there are >=3 additional unknown images added to gitlab container registry. cleanup - - DOCKER_MULTI_ARCH_IMAGES=$(docker buildx imagetools inspect "$DOCKER_IMAGE_BUILD_REGISTRY/$DOCKER_IMAGE_BUILD_NAME:$DOCKER_IMAGE_BUILD_TAG" --format "{{ range .Manifest.Manifests }}{{ if ne (print .Platform) \"&{unknown unknown [] }\" }}$DOCKER_IMAGE_BUILD_REGISTRY/$DOCKER_IMAGE_BUILD_NAME:$DOCKER_IMAGE_BUILD_TAG@{{ println .Digest }}{{end}} {{end}}"); - - docker buildx imagetools create $DOCKER_MULTI_ARCH_IMAGES --tag $DOCKER_IMAGE_BUILD_REGISTRY/$DOCKER_IMAGE_BUILD_NAME:$DOCKER_IMAGE_BUILD_TAG; - - docker buildx imagetools inspect $DOCKER_IMAGE_BUILD_REGISTRY/$DOCKER_IMAGE_BUILD_NAME:$DOCKER_IMAGE_BUILD_TAG; - - else - - echo "[DEBUG] building image"; - - docker build . \ - --label org.opencontainers.image.created="$(date '+%Y-%m-%d %H:%M:%S%:z')" \ - --label org.opencontainers.image.documentation="$CI_PROJECT_URL" \ - --label org.opencontainers.image.source="$CI_PROJECT_URL" \ - --label org.opencontainers.image.url="$CI_PROJECT_URL/-/releases/$(cz -n cz_nfc version --project)" \ - --label org.opencontainers.image.version="$(cz -n cz_nfc version --project)" \ - --label org.opencontainers.image.revision="$CI_COMMIT_SHA" \ - --no-cache \ - --file $DOCKER_DOCKERFILE \ - --tag $DOCKER_IMAGE_BUILD_REGISTRY/$DOCKER_IMAGE_BUILD_NAME:$DOCKER_IMAGE_BUILD_TAG; - - docker push $DOCKER_IMAGE_BUILD_REGISTRY/$DOCKER_IMAGE_BUILD_NAME:$DOCKER_IMAGE_BUILD_TAG; - - fi - rules: - - if: '$CI_PIPELINE_SOURCE == "merge_request_event"' - when: never - - if: $CI_COMMIT_TAG - when: on_success - - if: '$CI_COMMIT_BRANCH == "development"' - when: on_success - - if: '$CI_COMMIT_BRANCH != "master"' - when: always - - when: never - - -.publish-docker-hub: - stage: publish - image: docker:23-dind - services: - - docker:23-dind - before_script: - - | - - docker login $CI_REGISTRY -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD; - - if [ "0$DOCKER_IMAGE_BUILD_TARGET_PLATFORMS" != "0" ]; then - - for i in ${DOCKER_IMAGE_BUILD_TARGET_PLATFORMS//,/ } - do - - docker buildx imagetools inspect $DOCKER_IMAGE_BUILD_REGISTRY/$DOCKER_IMAGE_BUILD_NAME:$DOCKER_IMAGE_BUILD_TAG; - - #DOCKER_MULTI_ARCH_IMAGES=$(docker buildx imagetools inspect "$DOCKER_IMAGE_BUILD_REGISTRY/$DOCKER_IMAGE_BUILD_NAME:$DOCKER_IMAGE_BUILD_TAG" --format "{{ range .Manifest.Manifests }}{{ if ne (print .Platform) \"&{unknown unknown [] }\" }}$DOCKER_IMAGE_BUILD_REGISTRY/$DOCKER_IMAGE_BUILD_NAME:$DOCKER_IMAGE_BUILD_TAG@{{ println .Digest }}{{end}} {{end}}") - DOCKER_MULTI_ARCH_IMAGES=$(docker buildx imagetools inspect "$DOCKER_IMAGE_BUILD_REGISTRY/$DOCKER_IMAGE_BUILD_NAME:$DOCKER_IMAGE_BUILD_TAG" --format "{{ range .Manifest.Manifests }}$DOCKER_IMAGE_BUILD_REGISTRY/$DOCKER_IMAGE_BUILD_NAME:$DOCKER_IMAGE_BUILD_TAG@{{ println .Digest }} {{end}}") - - - echo "[DEBUG] DOCKER_MULTI_ARCH_IMAGES=$DOCKER_MULTI_ARCH_IMAGES"; - - done; - - else - - docker pull $DOCKER_IMAGE_BUILD_REGISTRY/$DOCKER_IMAGE_BUILD_NAME:$DOCKER_IMAGE_BUILD_TAG; - - fi - - #docker logout $CI_REGISTRY; # commented out to test if for private repo remaining logged in works to allow pulling image - - script: - - docker login docker.io -u $NFC_DOCKERHUB_USERNAME -p $NFC_DOCKERHUB_TOKEN - - docker image ls - - | - DOCKER_HUB_TAG=dev - - if [ "0$CI_COMMIT_TAG" != "0" ]; then - - DOCKER_HUB_TAG=latest - - if [ "0$CI_COMMIT_TAG" == *"rc"* ]; then - - DOCKER_HUB_TAG=dev - - fi - - fi - - echo "[DEBUG] DOCKER_IMAGE_PUBLISH_NAME=$DOCKER_IMAGE_PUBLISH_NAME"; - echo "[DEBUG] DOCKER_HUB_TAG=$DOCKER_HUB_TAG"; - - if [ "0$DOCKER_IMAGE_BUILD_TARGET_PLATFORMS" != "0" ]; then - - echo "[DEBUG] DOCKER_MULTI_ARCH_IMAGES=$DOCKER_MULTI_ARCH_IMAGES"; - - docker buildx imagetools create $DOCKER_MULTI_ARCH_IMAGES --tag $DOCKER_IMAGE_PUBLISH_REGISTRY/$DOCKER_IMAGE_PUBLISH_NAME:$DOCKER_HUB_TAG; - - if [ "0$CI_COMMIT_TAG" != "0" ]; then - - docker buildx imagetools create $DOCKER_MULTI_ARCH_IMAGES --tag $DOCKER_IMAGE_PUBLISH_REGISTRY/$DOCKER_IMAGE_PUBLISH_NAME:$CI_COMMIT_TAG; - - fi - - else - - docker image tag $DOCKER_IMAGE_BUILD_REGISTRY/$DOCKER_IMAGE_BUILD_NAME:$DOCKER_IMAGE_BUILD_TAG $DOCKER_IMAGE_PUBLISH_REGISTRY/$DOCKER_IMAGE_PUBLISH_NAME:$DOCKER_HUB_TAG; - - docker push $DOCKER_IMAGE_PUBLISH_REGISTRY/$DOCKER_IMAGE_PUBLISH_NAME:$DOCKER_HUB_TAG; - - if [ "0$CI_COMMIT_TAG" != "0" ]; then - - docker image tag $DOCKER_IMAGE_BUILD_NAME/$DOCKER_IMAGE_BUILD_REGISTRY:$DOCKER_IMAGE_BUILD_TAG $DOCKER_IMAGE_PUBLISH_REGISTRY/$DOCKER_IMAGE_PUBLISH_NAME:$CI_COMMIT_TAG; - - docker push $DOCKER_IMAGE_PUBLISH_REGISTRY/$DOCKER_IMAGE_PUBLISH_NAME:$CI_COMMIT_TAG; - - fi - - fi - - - docker logout docker.io - needs: [ "Docker Container" ] - environment: - name: DockerHub - url: $DOCKER_IMAGE_PUBLISH_URL - rules: - - if: '$CI_PIPELINE_SOURCE == "merge_request_event"' - when: never - - if: $CI_COMMIT_TAG - when: on_success - - if: '$CI_COMMIT_BRANCH == "development"' - when: on_success - - if: '$CI_COMMIT_BRANCH != "master"' - allow_failure: true - when: manual - - when: never - - Docker Container: extends: .build_docker_container