-
Notifications
You must be signed in to change notification settings - Fork 0
/
.gitlab-ci.yml
135 lines (118 loc) · 2.84 KB
/
.gitlab-ci.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
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
stages:
- code-style
- test
- coverage
- doc
- release
.virtualenv_template: &virtualenv_definition |
python -V
python3 -m venv venv
source venv/bin/activate
pip install -U pip setuptools wheel setuptools_scm
hash -r
pip freeze
make install-dev
pip freeze
.junit_template: &junit_definition
artifacts:
reports:
junit: "reports/junit*.xml"
test-py3.6:
image: docker.km3net.de/base/python:3.6
stage: test
script:
- pip install -U pip setuptools wheel setuptools_scm
- hash -r
- make install-test
- make test
<<: *junit_definition
allow_failure: true
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
black:
image: docker.km3net.de/base/python:3.9
stage: code-style
script:
- *virtualenv_definition
- make black-diff
- make black-check
allow_failure: true
coverage:
image: docker.km3net.de/base/python:3.9
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]*%)/'
artifacts:
paths:
- reports/coverage
build-docs:
image: docker.km3net.de/base/python:3.9
stage: doc
script:
- *virtualenv_definition
- cd doc && make clean && make html
cache: {}
pages:
image: docker.km3net.de/base/python:3.9
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
- main
pypi:
image: docker.km3net.de/base/python:3.9
stage: release
cache: {}
script:
- pip install -U twine wheel setuptools_scm
- python setup.py sdist
- python setup.py bdist_wheel
- twine upload dist/*
only:
- tags
allow_failure: true