166 lines
5.2 KiB
Text
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
|