]> kaliko git repositories - python-musicpd.git/blob - .gitlab-ci.yml
pyproject migration
[python-musicpd.git] / .gitlab-ci.yml
1 ---
2 image: python:latest
3
4 before_script:
5   - python -V      # Print out python version for debugging
6
7 stages:
8   - test
9   - build
10
11 .cache_python:
12   variables:
13     FF_USE_FASTZIP: 1  # enable faster caching/artifacting
14     PIP_CACHE_DIR: "$CI_PROJECT_DIR/.cache/pip"
15   cache:
16     key: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG"
17     paths:  # cache the venv and pip cache (you may opt to use just 1 of these)
18       - $PIP_CACHE_DIR
19       #- venv
20
21 .test:
22   stage: test
23   script:
24     - python -m venv venv
25     - source venv/bin/activate
26     - pip install pytest-cov
27     - py.test -q --cov=musicpd test.py
28   only:
29     changes:
30       - musicpd.py
31       - test.py
32
33 test-py3.11:
34   extends:
35     - .cache_python
36     - .test
37   image: "python:3.11"
38
39 test-py3.10:
40   extends:
41     - .cache_python
42     - .test
43   image: "python:3.10"
44   coverage: '/musicpd.py\s+\d+\s+\d+\s+(\d+)%/'
45
46 test-py3.9:
47   extends:
48     - .cache_python
49     - .test
50   image: "python:3.9"
51
52 test-py3.8:
53   extends:
54     - .cache_python
55     - .test
56   image: "python:3.8"
57
58 test-py3.7:
59   extends:
60     - .cache_python
61     - .test
62   image: "python:3.7"
63
64 test-py3.6:
65   extends:
66     - .cache_python
67     - .test
68   image: "python:3.6"
69
70
71 build:
72   stage: build
73   extends:
74     - .cache_python
75   script:
76     - python -m venv venv
77     - source venv/bin/activate
78     - pip install build
79     # packaging test
80     - python3 -m build -s -w
81     - pip install dist/*.whl
82     - pip install twine
83     - twine check dist/*
84   artifacts:
85     expire_in: 1 week
86     paths:
87       - dist/*.whl
88       - dist/*.tar.gz
89       - dist/*.zip
90   only:
91     - pushes
92
93 tag_release:
94   stage: build
95   extends:
96     - .cache_python
97   script:
98     - python -m venv venv
99     - source venv/bin/activate
100     - pip install build
101     - python3 -m build -s -w
102   artifacts:
103     paths:
104       - dist/*.whl
105       - dist/*.tar.gz
106       - dist/*.zip
107     name: "$CI_PROJECT_NAME-$CI_COMMIT_TAG"
108   only:
109     - tags
110
111 pages:
112   stage: build
113   script:
114     - pip install sphinx sphinx_rtd_theme
115     - sphinx-build -d ./build/doctrees doc/source -b html ./public -D html_theme=sphinx_rtd_theme
116   artifacts:
117     paths:
118       - public
119   only:
120     - master