stages:
  - test
  - quality-assurance
  - docs

# Also fetch submodules
variables:
  GIT_SUBMODULE_STRATEGY: recursive

# Ubuntu 22.04
py310-django42:
  stage: test
  image: ubuntu:22.04
  before_script:
    # Fix tzdata prompt
    - ln -sf /usr/share/zoneinfo/Europe/Paris /etc/localtime && echo Europe/Paris > /etc/timezone
    - >
        apt-get update &&
        apt-get install --no-install-recommends -y
        python3-django python3-django-crispy-forms
        python3-django-extensions python3-django-filters python3-django-polymorphic
        python3-djangorestframework python3-django-oauth-toolkit python3-psycopg2 python3-pil
        python3-babel python3-lockfile python3-pip python3-phonenumbers python3-memcache
        python3-bs4 python3-setuptools tox texlive-xetex
  script: tox -e py310-django42

# Debian Bookworm
py311-django42:
  stage: test
  image: debian:bookworm
  before_script:
    - >
        apt-get update &&
        apt-get install --no-install-recommends -y
        python3-django python3-django-crispy-forms
        python3-django-extensions python3-django-filters python3-django-polymorphic
        python3-djangorestframework python3-django-oauth-toolkit python3-psycopg2 python3-pil
        python3-babel python3-lockfile python3-pip python3-phonenumbers python3-memcache
        python3-bs4 python3-setuptools tox texlive-xetex
  script: tox -e py311-django42

linters:
  stage: quality-assurance
  image: debian:bookworm
  before_script:
    - apt-get update && apt-get install -y tox
  script: tox -e linters

  # Be nice to new contributors, but please use `tox`
  allow_failure: true

# Compile documentation
documentation:
  stage: docs
  image: sphinxdoc/sphinx
  before_script:
    - pip install sphinx-rtd-theme
    - cd docs
  script:
    - make dirhtml
  artifacts:
    paths:
      - docs/_build
    expire_in: 1 day