image: docker.km3net.de/base/python:3
# Change pip's cache directory to be inside the project directory since we can
# only cache local items.
variables:
PIP_CACHE_DIR: "$CI_PROJECT_DIR/.cache/pip"
cache:
paths:
- .cache/pip
- venv/
key: "$CI_COMMIT_REF_SLUG"
stages:
- test
- coverage
- doc
- release
.virtualenv_template: &virtualenv_definition |
python -V
pip install virtualenv
virtualenv venv
source venv/bin/activate
pip install -r requirements-dev.txt
make install
.junit_template: &junit_definition
artifacts:
reports:
junit: "reports/junit*.xml"
test-py3.5:
image: docker.km3net.de/base/python:3.5
stage: test
script:
- *virtualenv_definition
- make test
<<: *junit_definition
allow_failure: true
test-py3.6:
image: docker.km3net.de/base/python:3.6
stage: test
script:
- *virtualenv_definition
- make test
<<: *junit_definition
test-py3.7:
image: docker.km3net.de/base/python:3.7
stage: test
script:
- *virtualenv_definition
- make test
<<: *junit_definition
test-py3.8:
image: docker.km3net.de/base/python:3.8
stage: test
script:
- *virtualenv_definition
- make test
<<: *junit_definition
test-py3.9:
image: docker.km3net.de/base/python:3.9
stage: test
script:
- *virtualenv_definition
- make test
<<: *junit_definition
test-py3.10:
image: docker.km3net.de/base/python:3.10
stage: test
script:
- *virtualenv_definition
- make test
<<: *junit_definition
code-style:
image: docker.km3net.de/base/python:3.7
stage: test
script:
- *virtualenv_definition
- make black-check
allow_failure: true
coverage:
image: docker.km3net.de/base/python:3.6
stage: coverage
script:
- *virtualenv_definition
- make install-dev
- "make test-cov|grep TOTAL| awk '{printf \"COVERAGE: %.2f%%\", (1-$3/$2)*100 }'"
coverage: '/COVERAGE:\s*([0-9]*\.[0-9]*%)/'
# - make test-cov
# coverage: '/TOTAL.+ ([0-9]{1,3}%)/'
artifacts:
paths:
- reports/coverage
build-docs:
image: docker.km3net.de/base/python:3.6
stage: doc
script:
- *virtualenv_definition
- cd doc && make clean && make html
cache: {}
pages:
image: docker.km3net.de/base/python:3.6
stage: doc
script:
- *virtualenv_definition
- cd doc && make clean && make html
- mv _build/html ../public/
- cd .. && mv reports/coverage public/coverage
artifacts:
paths:
- public
cache: {}
only:
- tags
- master
pypi:
image: docker.km3net.de/base/python:3
stage: release
cache: {}
script:
- pip install -U twine wheel
- python setup.py sdist
- python setup.py bdist_wheel
- twine upload dist/*
only:
- tags
- master