Skip to content
Snippets Groups Projects
.gitlab-ci.yml 3.93 KiB
Newer Older
# SPDX-FileCopyrightText: 2021 Helmholtz-Zentrum für Umweltforschung GmbH - UFZ
#
# SPDX-License-Identifier: GPL-3.0-or-later

# ===========================================================
# preparation
# ===========================================================

variables:
  GIT_SUBMODULE_STRATEGY: recursive

David Schäfer's avatar
Ci  
David Schäfer committed
stages:
  - compliance
  - test
David Schäfer's avatar
David Schäfer committed
  - build
David Schäfer's avatar
Ci  
David Schäfer committed
  - deploy

Bert Palm's avatar
Bert Palm committed
default:
  image: python:3.8
  before_script:
    - pip install --upgrade pip
    - pip install -r requirements.txt
    - pip install -r tests/requirements.txt
Bert Palm's avatar
Bert Palm committed

# ===========================================================
David Schäfer's avatar
Ci  
David Schäfer committed
# Compliance stage
# ===========================================================
Bert Palm's avatar
Bert Palm committed

Bert Palm's avatar
Bert Palm committed
# check if everything is properly formatted
black:
David Schäfer's avatar
Ci  
David Schäfer committed
  stage: compliance
David Schäfer's avatar
David Schäfer committed
  script:
Bert Palm's avatar
Bert Palm committed
    - pip install black
    - black --check .
David Schäfer's avatar
David Schäfer committed

David Schäfer's avatar
David Schäfer committed
# check if imports are sorted
David Schäfer's avatar
Ci  
David Schäfer committed
  stage: compliance
David Schäfer's avatar
David Schäfer committed
  script:
    - pip install isort
    - isort --check .
David Schäfer's avatar
David Schäfer committed

Bert Palm's avatar
Bert Palm committed
# Check compliance with the REUSE specification
David Schäfer's avatar
Ci  
David Schäfer committed
reuse:
  stage: compliance
Bert Palm's avatar
Bert Palm committed
  image:
    name: fsfe/reuse:latest
    entrypoint: [""]
  before_script:
    - echo "Override default 'before_script'..."
  script:
Bert Palm's avatar
Bert Palm committed
    - reuse lint
Bert Palm's avatar
Bert Palm committed

David Schäfer's avatar
David Schäfer committed

David Schäfer's avatar
Ci  
David Schäfer committed
# ===========================================================
# Testing stage
# ===========================================================

Bert Palm's avatar
Bert Palm committed
# make (visual) coverage in gitlab merge request diff's
coverage:
  stage: test
Bert Palm's avatar
Bert Palm committed
  script:
    - pip install pytest-cov coverage
Bert Palm's avatar
Bert Palm committed
    - pytest --cov=saqc tests --ignore=tests/fuzzy -Werror
Bert Palm's avatar
Bert Palm committed
  after_script:
    - coverage xml
  # regex to find the coverage percentage in the job output
  coverage: '/^TOTAL.+?(\d+\%)$/'
  artifacts:
    when: always
    reports:
      coverage_report:
        coverage_format: cobertura
        path: coverage.xml
Bert Palm's avatar
Bert Palm committed

Bert Palm's avatar
Bert Palm committed
# test saqc with python 3.7
python37:
  stage: test
  image: python:3.7
  script:
    - pytest tests dios/test -Werror --junitxml=report.xml
    - python -m saqc --config docs/resources/data/config.csv --data docs/resources/data/data.csv --outfile /tmp/test.csv
  artifacts:
    when: always
    reports:
      junit: report.xml


David Schäfer's avatar
David Schäfer committed
# test saqc with python 3.8
python38:
  stage: test
  script:
Bert Palm's avatar
Bert Palm committed
    - pytest tests dios/test -Werror --junitxml=report.xml
    - python -m saqc --config docs/resources/data/config.csv --data docs/resources/data/data.csv --outfile /tmp/test.csv
Bert Palm's avatar
Bert Palm committed
  artifacts:
    when: always
    reports:
      junit: report.xml


David Schäfer's avatar
David Schäfer committed
# test saqc with python 3.9
python39:
Bert Palm's avatar
Bert Palm committed
  stage: test
David Schäfer's avatar
David Schäfer committed
  image: python:3.9
Bert Palm's avatar
Bert Palm committed
  script:
    - pytest tests dios/test -Werror --junitxml=report.xml
    - python -m saqc --config docs/resources/data/config.csv --data docs/resources/data/data.csv --outfile /tmp/test.csv
Bert Palm's avatar
Bert Palm committed
  artifacts:
    when: always
    reports:
      junit: report.xml

Bert Palm's avatar
Bert Palm committed

David Schäfer's avatar
David Schäfer committed
# test saqc with python 3.10
python310:
Bert Palm's avatar
Bert Palm committed
  stage: test
David Schäfer's avatar
David Schäfer committed
  image: python:3.10
Bert Palm's avatar
Bert Palm committed
  script:
    - pytest tests dios/test -Werror --junitxml=report.xml
    - python -m saqc --config docs/resources/data/config.csv --data docs/resources/data/data.csv --outfile /tmp/test.csv
Bert Palm's avatar
Bert Palm committed
  artifacts:
    when: always
    reports:
      junit: report.xml

Bert Palm's avatar
Bert Palm committed

David Schäfer's avatar
David Schäfer committed
doctest:
  stage: test
  script:
    - cd docs
    - pip install -r requirements.txt
    - make doc  # needed for _api tests
David Schäfer's avatar
David Schäfer committed
    - make test
David Schäfer's avatar
David Schäfer committed

Bert Palm's avatar
Bert Palm committed

David Schäfer's avatar
David Schäfer committed
# ===========================================================
# Building stage
# ===========================================================
David Schäfer's avatar
Ci  
David Schäfer committed
# check if we are able to build a wheel
wheel:
David Schäfer's avatar
David Schäfer committed
  stage: build
David Schäfer's avatar
Ci  
David Schäfer committed
  script:
    - pip install wheel
    - pip wheel .
David Schäfer's avatar
David Schäfer committed
    - pip install .

docs:
  stage: build
  script:
    - cd docs
    - pip install -r requirements.txt
David Schäfer's avatar
David Schäfer committed
    - make doc
David Schäfer's avatar
David Schäfer committed

Bert Palm's avatar
Bert Palm committed
# ===========================================================
# Extra Pipeline (run with a successful run of all other jobs on develop)
# ===========================================================
Bert Palm's avatar
Bert Palm committed

# make html docu with sphinx
Bert Palm's avatar
Bert Palm committed
pages:
  stage: deploy
Bert Palm's avatar
Bert Palm committed
  script:
    - cd docs/
    - pip install -r requirements.txt
Bert Palm's avatar
Bert Palm committed
    - cp -r _build/html ../public
  artifacts:
    paths:
David Schäfer's avatar
David Schäfer committed
      - public