stages: - pruefen - testen - bauen default: image: python:3.12-slim cache: key: files: - requirements.txt paths: - .venv/ .python_vorbereiten: &python_vorbereiten before_script: - python -m venv .venv - source .venv/bin/activate - pip install --quiet --upgrade pip - pip install --quiet -r requirements.txt # ---------- Stufe 1: schnelle Prüfungen ---------- lint: stage: pruefen <<: *python_vorbereiten script: - ruff check src/ tests/ - ruff format --check src/ tests/ # ---------- Stufe 2: Tests ---------- unit-tests: stage: testen <<: *python_vorbereiten script: - pytest --junitxml=report.xml --cov=src --cov-report=xml coverage: '/TOTAL.*\s+(\d+%)$/' artifacts: when: always reports: junit: report.xml coverage_report: coverage_format: cobertura path: coverage.xml expire_in: 1 week # ---------- Stufe 3: Artefakt ---------- container-bauen: stage: bauen image: quay.io/podman/stable before_script: - podman login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" "$CI_REGISTRY" script: - podman build -t "$CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA" . - podman push "$CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA" rules: - if: $CI_COMMIT_BRANCH == "main"