Skip to content
Snippets Groups Projects
.gitlab-ci.yml 2.48 KiB
image: python:3.11

stages:
  - test
  - build
  - docs
  - deploy
  - release

check:
  stage: test
  before_script:
    - pip3 install 'black>=23,<24' 'pylint>=3' 'isort[colors]<6'
  script:
    - pip3 install --editable .
    - black --check --diff --color .
    - isort --check --diff --color .
    - pylint src/finam

test:
  stage: test
  script:
    - pip3 install --editable .[test]
    - python -m pytest --cov finam --cov-report term-missing --cov-report html:cov --cov-report xml:cov.xml -v tests/
  coverage: '/(?i)total.*? (100(?:\.0+)?\%|[1-9]?\d(?:\.\d+)?\%)$/'
  artifacts:
    reports:
      coverage_report:
        coverage_format: cobertura
        path: cov.xml
    paths:
      - cov

benchmark:
  stage: test
  script:
    - pip3 install --editable .[test]
    - python -m pytest -v benchmarks/ --benchmark-histogram bench/bench  --benchmark-sort name
  artifacts:
    paths:
      - bench

profile:
  stage: test
  before_script:
    - apt-get update -y
    - apt-get install -y graphviz
    - pip3 install graphviz gprof2dot
  script:
    - pip3 install --editable .[test]
    - ./benchmarks/run_profiling.sh
  artifacts:
    paths:
      - prof

doctest:
  stage: test
  script:
    - pip3 install --editable .[doc]
    # doctest does not detect tests in code files during the first run.
    # add a dummy build to generate .rst files before the actual tests
    - sphinx-build -b dummy docs/source docs/build
    - sphinx-build -b doctest docs/source docs/build

documentation:
  stage: docs
  variables:
    GIT_STRATEGY: clone
    GIT_DEPTH: 0  # to have all tags
  script: