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 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
