variables:
  DOCKER_DRIVER: overlay2
  RELEASE_IMAGE: registry.gitlab.com/islandoftex/images/context
  DOCKER_HUB_IMAGE: contextgarden/context
stages:
  - build
  - test

.buildtemplate: &builddefinition
  stage: build
  image: docker:latest
  services:
    - docker:dind
  before_script:
    - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN registry.gitlab.com
    - docker login -u $DOCKER_HUB_USER -p $DOCKER_HUB_PASSWORD
    - docker info

.testtemplate: &testdefinition
  stage: test
  script:
    - context --version
    - context test.mkiv

build:beta:
  <<: *builddefinition
  script:
    - IMAGETAG="context-beta-`date +%Y-%m-%d-%H-%M`"
    - docker build -f Dockerfile.mkivbeta --tag $RELEASE_IMAGE:$IMAGETAG --tag $RELEASE_IMAGE:beta --tag $DOCKER_HUB_IMAGE:beta .
    - docker push $RELEASE_IMAGE:$IMAGETAG
    - docker push $RELEASE_IMAGE:beta
    - if [ ! -z "$PUSH_TO_DOCKER_HUB" ]; then docker push $DOCKER_HUB_IMAGE:beta; fi
  rules:
    - if: '$CTXBETA == "true"'
      when: always
    - when: never

build:current:
  <<: *builddefinition
  script:
    - IMAGETAG="context-current-`date +%Y-%m-%d-%H-%M`"
    - docker build -f Dockerfile.mkivcurrent --tag $RELEASE_IMAGE:$IMAGETAG --tag $RELEASE_IMAGE:current --tag $DOCKER_HUB_IMAGE:current .
    - docker push $RELEASE_IMAGE:$IMAGETAG
    - docker push $RELEASE_IMAGE:current
    - if [ ! -z "$PUSH_TO_DOCKER_HUB" ]; then docker push $DOCKER_HUB_IMAGE:current; fi
  rules:
    - if: '$CTXCURRENT == "true"'
      when: always
    - when: never

build:lmtx:
  <<: *builddefinition
  script:
    - IMAGETAG="context-lmtx-`date +%Y-%m-%d-%H-%M`"
    - docker build -f Dockerfile.lmtx --tag $RELEASE_IMAGE:$IMAGETAG --tag $RELEASE_IMAGE:lmtx --tag $DOCKER_HUB_IMAGE:lmtx .
    - docker push $RELEASE_IMAGE:$IMAGETAG
    - docker push $RELEASE_IMAGE:lmtx
    - if [ ! -z "$PUSH_TO_DOCKER_HUB" ]; then docker push $DOCKER_HUB_IMAGE:lmtx; fi
  rules:
    - if: '$CTXLMTX == "true"'
      when: always
    - when: never

test:beta:
  <<: *testdefinition
  needs: ["build:beta"]
  image: registry.gitlab.com/islandoftex/images/context:beta
  rules:
    - if: '$CTXBETA == "true"'
      when: always
    - when: never

test:current:
  <<: *testdefinition
  needs: ["build:current"]
  image: registry.gitlab.com/islandoftex/images/context:current
  rules:
    - if: '$CTXCURRENT == "true"'
      when: always
    - when: never

test:lmtx:
  <<: *testdefinition
  needs: ["build:lmtx"]
  image: registry.gitlab.com/islandoftex/images/context:lmtx
  rules:
    - if: '$CTXLMTX == "true"'
      when: always
    - when: never