+---
image: python:latest
before_script:
- test
- build
+.cache_python:
+ variables:
+ FF_USE_FASTZIP: 1 # enable faster caching/artifacting
+ PIP_CACHE_DIR: "$CI_PROJECT_DIR/.cache/pip"
+ cache:
+ key: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG"
+ paths: # cache the venv and pip cache (you may opt to use just 1 of these)
+ - $PIP_CACHE_DIR
+
.test:
stage: test
script:
- - pip install pytest-cov
- - py.test -q --cov=musicpd test.py
- only:
- - pushes
+ - python -m venv venv
+ - source venv/bin/activate
+ - pip install pytest-cov
+ - py.test -q --cov=musicpd test.py
+ rules:
+ - changes:
+ - musicpd.py
+ - test.py
+ - if: $CI_PIPELINE_SOURCE == "schedule"
+
+test-py3.12:
+ extends:
+ - .cache_python
+ - .test
+ image: "python:3.12"
+
+test-py3.11:
+ extends:
+ - .cache_python
+ - .test
+ image: "python:3.11"
test-py3.10:
- extends: ".test"
+ extends:
+ - .cache_python
+ - .test
image: "python:3.10"
coverage: '/musicpd.py\s+\d+\s+\d+\s+(\d+)%/'
test-py3.9:
- extends: ".test"
+ extends:
+ - .cache_python
+ - .test
image: "python:3.9"
test-py3.8:
- extends: ".test"
+ extends:
+ - .cache_python
+ - .test
image: "python:3.8"
test-py3.7:
- extends: ".test"
+ extends:
+ - .cache_python
+ - .test
image: "python:3.7"
+test-py3.6:
+ extends:
+ - .cache_python
+ - .test
+ image: "python:3.6"
+
build:
stage: build
+ extends:
+ - .cache_python
script:
- # packaging test
- - python setup.py bdist_wheel sdist
- - pip install dist/*.whl
- - pip install twine
- - twine check dist/*
+ - python -m venv venv
+ - source venv/bin/activate
+ - pip install build
+ # packaging test
+ - python3 -m build -s -w
+ - pip install dist/*.whl
+ - pip install twine
+ - twine check dist/*
artifacts:
expire_in: 1 week
paths:
- - dist/*.whl
- - dist/*.tar.gz
- - dist/*.zip
- only:
- - pushes
+ - dist/*.*
+ rules:
+ - if: $CI_PIPELINE_SOURCE == "push"
+ changes:
+ - .gitlab-ci.yml
+ - musicpd.py
+ - test.py
+ - if: $CI_PIPELINE_SOURCE == "schedule"
tag_release:
stage: build
+ extends:
+ - .cache_python
script:
- - python setup.py bdist_wheel sdist
+ - python -m venv venv
+ - source venv/bin/activate
+ - pip install build
+ - python3 -m build -s -w
artifacts:
paths:
- - dist/*.whl
- - dist/*.tar.gz
- - dist/*.zip
+ - dist/*.*
name: "$CI_PROJECT_NAME-$CI_COMMIT_TAG"
- only:
- - tags
+ rules:
+ - if: $CI_COMMIT_TAG
+
+# Documentation
+build_doc:
+ stage: build
+ script:
+ - pip install sphinx sphinx_rtd_theme
+ - sphinx-build doc/source -b html ./html -D html_theme=sphinx_rtd_theme
+ rules:
+ - if: $CI_PIPELINE_SOURCE == "push"
+ changes:
+ - doc/source/*
+ - if: $CI_PIPELINE_SOURCE == "schedule"
pages:
stage: build
script:
- - pip install sphinx sphinx_rtd_theme
- - sphinx-build -d ./build/doctrees doc/source -b html ./public -D html_theme=sphinx_rtd_theme
+ - pip install sphinx sphinx_rtd_theme
+ - sphinx-build -d ./build/doctrees doc/source -b html ./public -D html_theme=sphinx_rtd_theme
artifacts:
paths:
- - public
- only:
- - master
+ - public
+ rules:
+ - if: $CI_COMMIT_BRANCH == "master"