image: docker:latest services: - docker:dind stages: - Build Base - Build Variants - Push Images variables: DOCKER_HOST: tcp://docker:2375/ DOCKER_DRIVER: overlay2 build-base: stage: Build Base artifacts: expire_in: 1 week paths: - ./images/ except: - pushes tags: - docker before_script: - mkdir ./images script: - docker build --pull --build-arg "GRAV_VERSION=$GRAV_VERSION" -t "$CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA" . - docker save --output "./images/$CI_COMMIT_SHORT_SHA.tar" "$CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA" build-git: stage: Build Variants artifacts: expire_in: 1 week paths: - ./images/ dependencies: - build-base except: - pushes tags: - docker before_script: - docker load --input "./images/$CI_COMMIT_SHORT_SHA.tar" script: - docker build --build-arg "CI_COMMIT_SHORT_SHA=$CI_COMMIT_SHORT_SHA" -f ./variants/Dockerfile-git -t "$CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA-git" . - docker save --output "./images/$CI_COMMIT_SHORT_SHA-git.tar" "$CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA-git" push: stage: Push Images dependencies: - build-base - build-git except: - pushes tags: - docker before_script: - docker load --input "./images/$CI_COMMIT_SHORT_SHA.tar" - docker load --input "./images/$CI_COMMIT_SHORT_SHA-git.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:$GRAV_VERSION" - docker tag "$CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA-git" "$CI_REGISTRY_IMAGE:$GRAV_VERSION-git" - docker push "$CI_REGISTRY_IMAGE:$GRAV_VERSION" - docker push "$CI_REGISTRY_IMAGE:$GRAV_VERSION-git"