image: docker:stable

stages:
- build
- push

default:
  before_script:
  - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY

build:
  stage: build
  script:
  - docker pull $CI_REGISTRY_IMAGE:latest || true
  - docker build --pull --cache-from $CI_REGISTRY_IMAGE:latest --tag $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA .
  - docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA

push latest:
  stage: push
  only:
  - master
  variables:
    GIT_STRATEGY: none
  script:
  - docker pull $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
  - docker tag $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA $CI_REGISTRY_IMAGE:latest
  - docker push $CI_REGISTRY_IMAGE:latest

push tag:
  stage: push
  variables:
    GIT_STRATEGY: none
  except:
  - master
  script:
  - docker pull $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
  - docker tag $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME
  - docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME

build standalone:
  stage: build
  script:
    - docker pull $CI_REGISTRY_IMAGE:standalone || true
    - docker build --pull --cache-from $CI_REGISTRY_IMAGE:standalone --tag $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA-standalone . -f maubot/standalone/Dockerfile
    - docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA-standalone

push latest standalone:
  stage: push
  only:
  - master
  variables:
    GIT_STRATEGY: none
  script:
  - docker pull $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA-standalone
  - docker tag $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA-standalone $CI_REGISTRY_IMAGE:standalone
  - docker push $CI_REGISTRY_IMAGE:standalone

push tag standalone:
  stage: push
  variables:
    GIT_STRATEGY: none
  except:
  - master
  script:
  - docker pull $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA-standalone
  - docker tag $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA-standalone $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME-standalone
  - docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME-standalone
