variables:
  PIP_CACHE_DIR: "${CI_PROJECT_DIR}/.cache/pip"

cache:
  key:
    files:
      - poetry.lock
    prefix: relate
  paths:
    - ~/.cache/pypoetry
    - ~/.cache/pip

stages:
  - setup
  - lint
  - tests
  - docs

.install-deps-template: &install-deps
  before_script:
    - export PATH="/var/lib/gitlab-runner/.local/bin:$PATH"
    - pip3 install --upgrade poetry
    - poetry install -vv

.quality-template: &quality
  <<: *install-deps
  image: python:3.7
  stage: lint
  tags:
    - python3
  except:
    - tags

.test-template: &test
  <<: *install-deps
  script:
    - "bash ./.ci/run-tests-for-ci.sh"
  stage: tests
  tags:
    - python3
    - linux
  except:
    - tags
  coverage: "/TOTAL.+ ([0-9]{1,3}%)/"
  variables:
    CODECOV_TOKEN: "895e3bf2-cfd0-45f8-9a14-4b7bd148f76d"

setup:
  <<: *install-deps
  image: python:3.7
  stage: setup
  script: poetry config --list

flake8:
  <<: *quality
  script: poetry run flake8 relate course accounts tests

mypy:
  <<: *quality
  script: poetry run mypy relate course

Python 3:
  <<: *test
  image: python:3.6

Python 3 Expensive:
  <<: *test
  image: python:3.6
  variables:
    RL_CI_TEST: expensive

Python 3 CLI Tool:
  <<: *test
  script:
    - git clone https://github.com/inducer/relate-sample
    - cd relate-sample
    - poetry run relate validate .
    - poetry run relate test-code questions/autograded-python-example.yml
    - poetry run relate expand-yaml flows/quiz-test.yml > /dev/null

Documentation:
  <<: *install-deps
  stage: docs
  variables:
    RELATE_LOCAL_TEST_SETTINGS: './local_settings_example.py'
  script:
    - poetry run bash ./doc/build-docs.sh
  tags:
    - python3
  only:
    - master
