precommit: stage: test image: python:3.12-bookworm before_script: - apt-get update && apt-get install -y --no-install-recommends git script: - pip install -r requirements.precommit.txt - pre-commit run --all-files rules: - if: $CI_PIPELINE_SOURCE == 'merge_request_event' .test_template: &test_template stage: test script: - pip install poetry - poetry install - source `poetry env info --path`/bin/activate - python -m pytest test python3.10: <<: *test_template image: python:3.10-slim test python3.11: <<: *test_template image: python:3.11-slim test python3.12: <<: *test_template image: python:3.12-slim coverage: '/(?i)total.*? (100(?:\.0+)?\%|[1-9]?\d(?:\.\d+)?\%)$/' artifacts: reports: coverage_report: coverage_format: cobertura path: coverage.xml release: stage: build rules: - if: $CI_COMMIT_TAG script: - pip install poetry - poetry build - poetry config repositories.gitlab "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/pypi" - poetry config http-basic.gitlab gitlab-ci-token "$CI_JOB_TOKEN" - poetry publish --repository gitlab include: - template: Jobs/SAST.gitlab-ci.yml