From 342b2ee9e5c2402e0b67dc8c27f954f229acb457 Mon Sep 17 00:00:00 2001 From: Ramon Date: Sun, 26 Jul 2026 22:34:14 +0200 Subject: [PATCH] ci: tests in een container draaien in plaats van een venv op de runner De testsstap die ik in v0.5.00 toevoegde blokkeerde de deploy: de runner heeft geen python3-venv, dus `python3 -m venv` faalde en alle volgende stappen werden overgeslagen. - Tests draaien nu in python:3.12-slim via docker, dat de runner sowieso heeft. Bijkomend voordeel: dezelfde Python-versie als waarop de app in productie draait, in plaats van wat er toevallig op de runner staat. - PYTHONDONTWRITEBYTECODE en -p no:cacheprovider voorkomen dat de container root-eigen __pycache__/.pytest_cache in de werkmap achterlaat, wat de rsync-stap en volgende checkouts zou kunnen hinderen. - Pip-cache in een named volume, zodat een herhaalde run niet opnieuw downloadt. Toegepast in deploy.yml, deploy-prod.yml en build.yml. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01C7oLCRYzY5ixJ5Sv8Y8EFb --- .forgejo/workflows/build.yml | 15 ++++++++++++--- .forgejo/workflows/deploy-prod.yml | 15 ++++++++++++--- .forgejo/workflows/deploy.yml | 15 ++++++++++++--- 3 files changed, 36 insertions(+), 9 deletions(-) diff --git a/.forgejo/workflows/build.yml b/.forgejo/workflows/build.yml index a606b95..ec99593 100644 --- a/.forgejo/workflows/build.yml +++ b/.forgejo/workflows/build.yml @@ -56,9 +56,18 @@ jobs: - name: Tests draaien run: | set -euo pipefail - python3 -m venv /tmp/su-build-venv - /tmp/su-build-venv/bin/pip install -q -r server-up/requirements.txt pytest - /tmp/su-build-venv/bin/python -m pytest tests -q + # In een container in plaats van een venv op de runner: die heeft + # geen python3-venv, en zo draaien de tests bovendien op exact de + # Python-versie waarop de app in productie draait. + # PYTHONDONTWRITEBYTECODE + no:cacheprovider voorkomen dat er + # root-eigen bestanden in de werkmap achterblijven. + docker run --rm \ + -v "$PWD:/w" -w /w \ + -v su-pip-cache:/root/.cache/pip \ + -e PYTHONDONTWRITEBYTECODE=1 \ + python:3.12-slim \ + sh -c "pip install -q -r server-up/requirements.txt pytest \ + && python -m pytest tests -q -p no:cacheprovider" - name: Inloggen op de registry run: | diff --git a/.forgejo/workflows/deploy-prod.yml b/.forgejo/workflows/deploy-prod.yml index 3115b69..abc0492 100644 --- a/.forgejo/workflows/deploy-prod.yml +++ b/.forgejo/workflows/deploy-prod.yml @@ -44,9 +44,18 @@ jobs: - name: Tests draaien run: | set -euo pipefail - python3 -m venv /tmp/su-test-venv - /tmp/su-test-venv/bin/pip install -q -r server-up/requirements.txt pytest - /tmp/su-test-venv/bin/python -m pytest tests -q + # In een container in plaats van een venv op de runner: die heeft + # geen python3-venv, en zo draaien de tests bovendien op exact de + # Python-versie waarop de app in productie draait. + # PYTHONDONTWRITEBYTECODE + no:cacheprovider voorkomen dat er + # root-eigen bestanden in de werkmap achterblijven. + docker run --rm \ + -v "$PWD:/w" -w /w \ + -v su-pip-cache:/root/.cache/pip \ + -e PYTHONDONTWRITEBYTECODE=1 \ + python:3.12-slim \ + sh -c "pip install -q -r server-up/requirements.txt pytest \ + && python -m pytest tests -q -p no:cacheprovider" - name: Sync code naar deploy-directory run: | diff --git a/.forgejo/workflows/deploy.yml b/.forgejo/workflows/deploy.yml index 3bb6f2a..4acbd17 100644 --- a/.forgejo/workflows/deploy.yml +++ b/.forgejo/workflows/deploy.yml @@ -44,9 +44,18 @@ jobs: - name: Tests draaien run: | set -euo pipefail - python3 -m venv /tmp/su-test-venv - /tmp/su-test-venv/bin/pip install -q -r server-up/requirements.txt pytest - /tmp/su-test-venv/bin/python -m pytest tests -q + # In een container in plaats van een venv op de runner: die heeft + # geen python3-venv, en zo draaien de tests bovendien op exact de + # Python-versie waarop de app in productie draait. + # PYTHONDONTWRITEBYTECODE + no:cacheprovider voorkomen dat er + # root-eigen bestanden in de werkmap achterblijven. + docker run --rm \ + -v "$PWD:/w" -w /w \ + -v su-pip-cache:/root/.cache/pip \ + -e PYTHONDONTWRITEBYTECODE=1 \ + python:3.12-slim \ + sh -c "pip install -q -r server-up/requirements.txt pytest \ + && python -m pytest tests -q -p no:cacheprovider" - name: Sync code naar deploy-directory run: |