Tests in der CI über den Build-Kontext statt per Bind-Mount
Docker-Image bauen / build (push) Successful in 1m31s

Der bisherige Schritt hängte das Arbeitsverzeichnis mit -v "$PWD":/app in
einen Container. Läuft der Gitea-Runner selbst in einem Container, zeigt
$PWD auf einen Pfad, den der Docker-Daemon des Hosts nicht kennt: der
Mount wäre leer, pytest fände keine Tests und meldete Erfolg. Wieder ein
Test, der nicht hätte fehlschlagen können.

Jetzt über Dockerfile.test - der Code kommt über den Build-Kontext hinein,
unabhängig davon, wie der Runner aufgebaut ist. tests/ bleibt dafür im
Kontext; das Anwendungs-Image kopiert sie weiterhin nicht mit.

Lokal genauso ausgeführt wie die CI es tun wird: 81 Tests grün.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GR4bNaj9GtRu57J4Niii8o
This commit is contained in:
2026-08-30 14:33:00 +02:00
co-authored by Claude Opus 5
parent 31f59fd3c8
commit 2a55dcf1ce
3 changed files with 26 additions and 5 deletions
+2 -1
View File
@@ -17,7 +17,8 @@ uploads/
*.sqlite3
# Entwicklung
tests/
# tests/ bleibt bewusst im Kontext: Dockerfile.test braucht sie.
# Das Anwendungs-Image kopiert sie nicht mit.
.pytest_cache/
.venv/
venv/
+6 -4
View File
@@ -28,10 +28,12 @@ jobs:
- name: Tests
run: |
set -eu
docker run --rm -v "$PWD":/app -w /app python:3.11-slim bash -c '
pip install --quiet -r requirements-dev.txt
python -m pytest -q
'
# Über den Build-Kontext statt per Bind-Mount: läuft der Runner
# selbst in einem Container, zeigt $PWD auf einen Pfad, den der
# Docker-Daemon des Hosts nicht kennt - der Mount wäre leer und
# die Tests liefen ohne Fehlermeldung ins Leere.
docker build -f Dockerfile.test -t kleiderboerse-tests .
docker run --rm kleiderboerse-tests
- name: Version bestimmen
id: meta
+18
View File
@@ -0,0 +1,18 @@
# Nur zum Testen - baut die Testumgebung samt Quellcode ins Image.
#
# Bewusst ohne Bind-Mount: läuft der CI-Runner selbst in einem Container,
# zeigt $PWD auf einen Pfad, den der Docker-Daemon des Hosts nicht kennt.
# Der Mount wäre dann leer und die Tests liefen ins Leere - ohne
# Fehlermeldung. Über den Build-Kontext kommt der Code zuverlässig hinein.
FROM python:3.11-slim
WORKDIR /app
COPY requirements.txt requirements-dev.txt ./
RUN pip install --no-cache-dir -r requirements-dev.txt
COPY alembic.ini ./
COPY alembic/ ./alembic/
COPY app/ ./app/
COPY tests/ ./tests/
CMD ["python", "-m", "pytest", "-q"]