image: docker:stable services: - docker:stable-dind variables: DOCKER_DRIVER: overlay2 stages: - build - push before_script: - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY Build: script: - docker build --pull -t $CI_REGISTRY_IMAGE:tmp . - docker push $CI_REGISTRY_IMAGE:tmp stage: build tags: - docker Push development: only: - development script: - docker pull $CI_REGISTRY_IMAGE:tmp - docker tag $CI_REGISTRY_IMAGE:tmp $CI_REGISTRY_IMAGE:development - docker push $CI_REGISTRY_IMAGE:development stage: push tags: - docker Push latest: only: - master script: - docker pull $CI_REGISTRY_IMAGE:tmp - docker tag $CI_REGISTRY_IMAGE:tmp $CI_REGISTRY_IMAGE:latest - docker push $CI_REGISTRY_IMAGE:latest stage: push tags: - docker Push tag: only: - tags script: - docker pull $CI_REGISTRY_IMAGE:tmp - docker tag $CI_REGISTRY_IMAGE:tmp $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME - docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME stage: push tags: - docker