image: docker
services:
  - docker:dind

variables:
  DOCKER_DRIVER: overlay2
  DOCKER_TLS_CERTDIR: "/certs"
  CRAN: https://cloud.r-project.org
  R_VERSION_UPDATE: "false"

before_script:
  - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
  - export VERSION_MAJ_MIN_PAT=`sed -n "s|.*R_VERSION:-\([0-9]\.[0-9]\.[0-9]\).*|\1|p" r-ver/latest.Dockerfile`
  - export VERSION_MAJ_MIN=`echo "${VERSION_MAJ_MIN_PAT:0:3}"`
  - export VERSION_MAJ=`echo "${VERSION_MAJ_MIN_PAT:0:1}"`

build-latest:
  stage: build
  script:
    - docker build --build-arg CRAN=$CRAN --pull -t $CI_REGISTRY_IMAGE:latest -f r-ver/latest.Dockerfile .
    - docker tag $CI_REGISTRY_IMAGE:latest $CI_REGISTRY_IMAGE:$VERSION_MAJ_MIN_PAT
    - docker tag $CI_REGISTRY_IMAGE:latest $CI_REGISTRY_IMAGE:$VERSION_MAJ_MIN
    - docker tag $CI_REGISTRY_IMAGE:latest $CI_REGISTRY_IMAGE:$VERSION_MAJ
    - docker push $CI_REGISTRY_IMAGE:latest
    - docker push $CI_REGISTRY_IMAGE:$VERSION_MAJ_MIN_PAT
    - docker push $CI_REGISTRY_IMAGE:$VERSION_MAJ_MIN
    - docker push $CI_REGISTRY_IMAGE:$VERSION_MAJ
  rules:
    - if: $CI_COMMIT_BRANCH == "master"
      changes:
        - r-ver/latest.Dockerfile

build-version:
  stage: build
  script:
    - docker build --pull -t $CI_REGISTRY_IMAGE:4.0.3 -f r-ver/4.0.3.Dockerfile .
    - docker push $CI_REGISTRY_IMAGE:4.0.3
  rules:
    - if: $CI_COMMIT_BRANCH == "freeze-version"
      changes:
        - r-ver/4.0.3.Dockerfile

trigger-latest-build-foreign:
  stage: deploy
  before_script:
    - apk add --update curl
    - rm -rf /var/cache/apk/*
  script:
    - curl -X POST -F token=$R_TIDYVERSE -F ref=master https://gitlab.b-data.ch/api/v4/projects/173/trigger/pipeline
    - curl -X POST -F token=$R_PLUMBER -F ref=master https://gitlab.b-data.ch/api/v4/projects/176/trigger/pipeline
  rules:
    - if: $CI_COMMIT_BRANCH == "master" && $R_VERSION_UPDATE != "true"
      changes:
        - r-ver/latest.Dockerfile

trigger-latest-build:
  stage: deploy
  before_script:
    - apk add --update curl
    - rm -rf /var/cache/apk/*
  script:
    - curl -X POST -F token=$ROCKER_RSTUDIO -F ref=master https://gitlab.b-data.ch/api/v4/projects/185/trigger/pipeline
  rules:
    - if: $CI_COMMIT_BRANCH == "master"
      changes:
        - r-ver/latest.Dockerfile

trigger-version-build:
  stage: deploy
  before_script:
    - apk add --update curl
    - rm -rf /var/cache/apk/*
  script:
    - curl -X POST -F token=$ROCKER_RSTUDIO -F ref=freeze-version https://gitlab.b-data.ch/api/v4/projects/185/trigger/pipeline
  rules:
    - if: $CI_COMMIT_BRANCH == "freeze-version"
      changes:
        - r-ver/4.0.3.Dockerfile