]> kaliko git repositories - python-musicpd.git/blob - .gitlab-ci.yml
ci: Add python 3.12 test
[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
20 .test:
21   stage: test
22   script:
23     - python -m venv venv
24     - source venv/bin/activate
25     - pip install pytest-cov
26     - py.test -q --cov=musicpd test.py
27   rules:
28     - changes:
29         - musicpd.py
30         - test.py
31     - if: $CI_PIPELINE_SOURCE == "schedule"
32
33 test-py3.12:
34   extends:
35     - .cache_python
36     - .test
37   image: "python:3.12"
38
39 test-py3.11:
40   extends:
41     - .cache_python
42     - .test
43   image: "python:3.11"
44
45 test-py3.10:
46   extends:
47     - .cache_python
48     - .test
49   image: "python:3.10"
50   coverage: '/musicpd.py\s+\d+\s+\d+\s+(\d+)%/'
51
52 test-py3.9:
53   extends:
54     - .cache_python
55     - .test
56   image: "python:3.9"
57
58 test-py3.8:
59   extends:
60     - .cache_python
61     - .test
62   image: "python:3.8"
63
64 test-py3.7:
65   extends:
66     - .cache_python
67     - .test
68   image: "python:3.7"
69
70 test-py3.6:
71   extends:
72     - .cache_python
73     - .test
74   image: "python:3.6"
75
76
77 build:
78   stage: build
79   extends:
80     - .cache_python
81   script:
82     - python -m venv venv
83     - source venv/bin/activate
84     - pip install build
85     # packaging test
86     - python3 -m build -s -w
87     - pip install dist/*.whl
88     - pip install twine
89     - twine check dist/*
90   artifacts:
91     expire_in: 1 week
92     paths:
93       - dist/*.*
94   rules:
95     - if: $CI_PIPELINE_SOURCE == "push"
96       changes:
97         - .gitlab-ci.yml
98         - musicpd.py
99         - test.py
100     - if: $CI_PIPELINE_SOURCE == "schedule"
101
102 tag_release:
103   stage: build
104   extends:
105     - .cache_python
106   script:
107     - python -m venv venv
108     - source venv/bin/activate
109     - pip install build
110     - python3 -m build -s -w
111   artifacts:
112     paths:
113       - dist/*.*
114     name: "$CI_PROJECT_NAME-$CI_COMMIT_TAG"
115   rules:
116     - if: $CI_COMMIT_TAG
117
118 # Documentation
119 build_doc:
120   stage: build
121   script:
122     - pip install sphinx sphinx_rtd_theme
123     - sphinx-build doc/source -b html ./html -D html_theme=sphinx_rtd_theme
124   rules:
125     - if: $CI_PIPELINE_SOURCE == "push"
126       changes:
127         - doc/source/*
128     - if: $CI_PIPELINE_SOURCE == "schedule"
129
130 pages:
131   stage: build
132   script:
133     - pip install sphinx sphinx_rtd_theme
134     - sphinx-build -d ./build/doctrees doc/source -b html ./public -D html_theme=sphinx_rtd_theme
135   artifacts:
136     paths:
137       - public
138   rules:
139     - if: $CI_COMMIT_BRANCH == "master"