Tests in der CI über den Build-Kontext statt per Bind-Mount
Docker-Image bauen / build (push) Successful in 1m31s
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:
+2
-1
@@ -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/
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"]
|
||||
Reference in New Issue
Block a user