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
|
*.sqlite3
|
||||||
|
|
||||||
# Entwicklung
|
# Entwicklung
|
||||||
tests/
|
# tests/ bleibt bewusst im Kontext: Dockerfile.test braucht sie.
|
||||||
|
# Das Anwendungs-Image kopiert sie nicht mit.
|
||||||
.pytest_cache/
|
.pytest_cache/
|
||||||
.venv/
|
.venv/
|
||||||
venv/
|
venv/
|
||||||
|
|||||||
@@ -28,10 +28,12 @@ jobs:
|
|||||||
- name: Tests
|
- name: Tests
|
||||||
run: |
|
run: |
|
||||||
set -eu
|
set -eu
|
||||||
docker run --rm -v "$PWD":/app -w /app python:3.11-slim bash -c '
|
# Über den Build-Kontext statt per Bind-Mount: läuft der Runner
|
||||||
pip install --quiet -r requirements-dev.txt
|
# selbst in einem Container, zeigt $PWD auf einen Pfad, den der
|
||||||
python -m pytest -q
|
# 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
|
- name: Version bestimmen
|
||||||
id: meta
|
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