sphinxcontrib/bitbucket-pipelines.yml.m4
2025-05-25 15:10:40 +02:00

166 lines
5.2 KiB
Text

image: byteb4rb1e/build-python313
define(`bootstrappipenv', patsubst(
`- python3 -m venv --system-site-packages .venv
- .venv/bin/python3 -m pip install pipenv', `^', $1))dnl
definitions:
caches:
venv:
path: .venv
steps:
- step: &configure
name: configure
caches:
- venv
artifacts:
- config.log
- config.status
script:
bootstrappipenv(` ')
- .venv/bin/python3 -m pipenv run sh configure
- step: &test-static
name: test-static
caches:
- venv
artifacts:
- test-reports/*
script:
- .venv/bin/python3 -m pipenv run make test-reports/static
- step: &test-unit
artifacts:
- test-reports/*
script:
bootstrappipenv(` ')
- .venv/bin/python3 -m pipenv run sh configure
- .venv/bin/python3 -m pipenv run make test-reports/unit
- step: &test-integration
artifacts:
- test-reports/*
script:
bootstrappipenv(` ')
- .venv/bin/python3 -m pipenv run sh configure
- .venv/bin/python3 -m pipenv run make test-reports/integration
- step: &doc
name: doc
caches:
- venv
artifacts:
- build/doc/**
script:
- make clean
- .venv/bin/python3 -m pipenv run make build/doc
- step: &dist
name: dist
caches:
- venv
artifacts:
- dist/*
script:
- make clean
- .venv/bin/python3 -m pipenv run make dist
- step: &publish
name: publish
caches:
- venv
artifacts:
- dist/*
script:
- echo "publish"
- step: &archive
name: archive
caches:
- venv
artifacts:
- dist/*
script:
- echo "archive"
- step: &chore
name: chore
caches:
- venv
artifacts:
- requirements.txt
- requirements-dev.txt
- Pipfile.lock
script:
- make clean
- .venv/bin/python3 -m pipenv run make chore
# TODO: this is good, but rather useless yet as the chore
# target only regenerates requirements.txt and
# requirements-dev.txt from Pipfile.lock, but it does not test
# the sync between Pipfile and Pipfile.lock, as the locking
# mechanism of pipenv currently is platform-dependent, i.e., it
# is not possible to define a minimum Python version and expect
# pipenv to find the right versions of dependencies compatible
# with all specified platforms.
# - git diff --exit-code
undefine(`bootstrappipenv')dnl
define(`allteststeps', patsubst(
`- parallel:
steps:
- step: *test-static
- step:
<<: *test-unit
image: byteb4rb1e/build-python39
name: test-unit-python39
- step:
<<: *test-unit
image: byteb4rb1e/build-python310
name: test-unit-python310
- step:
<<: *test-unit
image: byteb4rb1e/build-python311
name: test-unit-python311
- step:
<<: *test-unit
image: byteb4rb1e/build-python312
name: test-unit-python312
- step:
<<: *test-unit
image: byteb4rb1e/build-python313
name: test-unit-python313
- step:
<<: *test-integration
image: byteb4rb1e/build-python39
name: test-integration-python39
- step:
<<: *test-integration
image: byteb4rb1e/build-python310
name: test-integration-python310
- step:
<<: *test-integration
image: byteb4rb1e/build-python311
name: test-integration-python311
- step:
<<: *test-integration
image: byteb4rb1e/build-python312
name: test-integration-python312
- step:
<<: *test-integration
image: byteb4rb1e/build-python313
name: test-integration-python313', `^', $1))dnl
pipelines:
default:
- step: *configure
- parallel:
steps:
- step: *test-static
- step: *dist
branches:
master:
- step: *configure
allteststeps(` ')
- step: *dist
- step: *archive
- parallel:
steps:
- step: *doc
- step: *publish
pullrequests:
"{master,dev}":
- step: *configure
allteststeps(` ')
- parallel:
steps:
- step: *doc
- step: *dist
undefine(`allteststeps')dnl