image: docker:19.03.13 services: - docker:19.03.13-dind stages: - build - push variables: DOCKER_TLS_CERTDIR: "/certs" INTERMEDIATE_IMAGE_TAG: $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME-$CI_COMMIT_SHA .reg_setup: before_script: - apk add --no-cache curl - curl --fail --show-error --location "https://github.com/genuinetools/reg/releases/download/v$REG_VERSION/reg-linux-amd64" --output /usr/local/bin/reg - echo "$REG_SHA256 /usr/local/bin/reg" | sha256sum -c - - chmod a+x /usr/local/bin/reg variables: REG_SHA256: ade837fc5224acd8c34732bf54a94f579b47851cc6a7fd5899a98386b782e228 REG_VERSION: 0.16.1 build_image: script: - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY - docker build -t $INTERMEDIATE_IMAGE_TAG . - docker push $INTERMEDIATE_IMAGE_TAG stage: build tags: - docker push_master: extends: - .reg_setup only: - master script: - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY - docker pull $INTERMEDIATE_IMAGE_TAG - /usr/local/bin/reg rm -d --auth-url $CI_REGISTRY -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $INTERMEDIATE_IMAGE_TAG - docker tag $INTERMEDIATE_IMAGE_TAG $IMAGE_TAG - docker push $IMAGE_TAG stage: push tags: - docker variables: IMAGE_TAG: $CI_REGISTRY_IMAGE:latest push_other: extends: - .reg_setup except: - master only: - branches - tags script: - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY - docker pull $INTERMEDIATE_IMAGE_TAG - /usr/local/bin/reg rm -d --auth-url $CI_REGISTRY -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $INTERMEDIATE_IMAGE_TAG - docker tag $INTERMEDIATE_IMAGE_TAG $IMAGE_TAG - docker push $IMAGE_TAG stage: push tags: - docker variables: IMAGE_TAG: $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME