# vim: ts=2 stages: - testing - release run-tests: stage: testing script: - git clean -dfx - uv sync --all-extras --no-progress - source .venv/bin/activate - ./run-tests.sh -V - deactivate coverage: /TOTAL.*? (100(?:\.0+)?\%|[1-9]?\d(?:\.\d+)?\%)$/ artifacts: paths: - coverage.xml when: on_success access: developer expire_in: "10 mins" rules: - if: $CI_PIPELINE_SOURCE == 'merge_request_event' - if: $CI_COMMIT_TAG =~ /^v\d+/ sonarqube-check: stage: testing needs: - run-tests variables: SONAR_USER_HOME: "${CI_PROJECT_DIR}/.sonar" # Defines the location of the analysis task cache GIT_DEPTH: "0" # Tells git to fetch all the branches of the project, required by the analysis task cache: key: "${CI_JOB_NAME}" paths: - .sonar/cache script: - sonar-scanner allow_failure: true rules: - if: $CI_PIPELINE_SOURCE == 'merge_request_event' - if: $CI_COMMIT_TAG =~ /^v\d+/ pypi-release: stage: release needs: - run-tests rules: - if: $CI_COMMIT_TAG =~ /^v\d+/ script: - rm -f dist/* - uv build - uvx twine check dist/* - TWINE_USERNAME=${PYPI_USER} TWINE_PASSWORD=${PYPI_PASSWORD} uvx twine upload --skip-existing --non-interactive dist/*