diff --git a/.woodpecker/main.yaml b/.woodpecker/main.yaml index cefe6e2..c8b151b 100644 --- a/.woodpecker/main.yaml +++ b/.woodpecker/main.yaml @@ -11,19 +11,21 @@ services: steps: - name: test-UTs-n-ITs - image: python:3.13-slim + image: gitea.earthmanrpg.me/discoman/python-tdd-ci:latest environment: DATABASE_URL: postgresql://postgres:postgres@postgres/python_tdd_test CELERY_BROKER_URL: redis://redis:6379/0 REDIS_URL: redis://redis:6379/1 - # Workspace-shared pip cache — Woodpecker mounts the workspace across - # all steps in a run, so the wheels populated here are reused by - # test-two-browser-FTs + test-FTs (saves ~30-60s × 2 = ~1-2 min per - # run). Cache lives only inside one run; cross-run caching would - # need a volume plugin. PIP_CACHE_DIR: .pip-cache commands: - - pip install -r requirements.txt + # `requirements.dev.txt` is the pinned superset Dockerfile.ci pre- + # installs; pinning here means pip skips resolver+download and just + # verifies "already satisfied" (~5-10s) instead of resolving unpinned + # requirements.txt against PyPI from scratch (~30-60s). Drift safety + # net: if requirements.dev.txt has changed since the CI image was + # last rebuilt + pushed, pip installs the delta — slower for that + # run but never broken. See TDD SKILL.md § CI dependency discipline. + - pip install -r requirements.dev.txt - cd ./src - python manage.py test apps when: @@ -45,7 +47,7 @@ steps: from_secret: stripe_publishable_key PIP_CACHE_DIR: .pip-cache commands: - - pip install -r requirements.txt + - pip install -r requirements.dev.txt - cd ./src - python manage.py collectstatic --noinput - python manage.py test functional_tests --tag=two-browser @@ -70,7 +72,7 @@ steps: from_secret: stripe_publishable_key PIP_CACHE_DIR: .pip-cache commands: - - pip install -r requirements.txt + - pip install -r requirements.dev.txt - cd ./src - python manage.py collectstatic --noinput - python manage.py test functional_tests --parallel --exclude-tag=channels --exclude-tag=two-browser