image: docker:latest services: - docker:dind stages: - Build Image - Push Image variables: DOCKER_HOST: tcp://docker:2375/ DOCKER_DRIVER: overlay2 build-image: stage: Build Image artifacts: expire_in: 1 week paths: - ./images/ except: - pushes tags: - docker before_script: - mkdir ./images script: - docker build --pull --build-arg "IMAGE_TAG=$IMAGE_TAG" -t "$CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA" . - docker save --output "./images/$CI_COMMIT_SHORT_SHA.tar" "$CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA" push-image: stage: Push Image dependencies: - build-image except: - pushes tags: - docker before_script: - docker load --input "./images/$CI_COMMIT_SHORT_SHA.tar" - echo "$CI_REGISTRY_PASSWORD" | docker login -u "$CI_REGISTRY_USER" --password-stdin script: - docker tag "$CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA" "$CI_REGISTRY_IMAGE:$IMAGE_TAG" - docker push "$CI_REGISTRY_IMAGE:$IMAGE_TAG"