From 29e3589b1a690de81132dadcdcfc9f3bd36862e2 Mon Sep 17 00:00:00 2001 From: Mark <162816078+markashton480@users.noreply.github.com> Date: Sat, 28 Feb 2026 16:43:20 +0000 Subject: [PATCH] fix(ci): avoid docker subnet exhaustion and harden nightly feed check --- .gitea/workflows/ci.yml | 24 ++++++++----------- .github/workflows/ci.yml | 24 ++++++++----------- .../core/tests/test_nightly_e2e_playwright.py | 7 +++++- 3 files changed, 26 insertions(+), 29 deletions(-) diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index 1cb2c72..3d10c36 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -23,8 +23,7 @@ jobs: - name: Start PostgreSQL run: | - docker network create ci-net - docker run -d --name ci-postgres --network ci-net \ + docker run -d --name ci-postgres \ -e POSTGRES_DB=nohype \ -e POSTGRES_USER=nohype \ -e POSTGRES_PASSWORD=nohype \ @@ -39,22 +38,22 @@ jobs: exit 1 - name: Ruff - run: docker run --rm --network ci-net -e SECRET_KEY=ci-secret-key -e DATABASE_URL=postgres://nohype:nohype@ci-postgres:5432/nohype "$CI_IMAGE" ruff check . + run: docker run --rm --network container:ci-postgres -e SECRET_KEY=ci-secret-key -e DATABASE_URL=postgres://nohype:nohype@127.0.0.1:5432/nohype "$CI_IMAGE" ruff check . - name: Mypy - run: docker run --rm --network ci-net -e SECRET_KEY=ci-secret-key -e DATABASE_URL=postgres://nohype:nohype@ci-postgres:5432/nohype "$CI_IMAGE" mypy apps config + run: docker run --rm --network container:ci-postgres -e SECRET_KEY=ci-secret-key -e DATABASE_URL=postgres://nohype:nohype@127.0.0.1:5432/nohype "$CI_IMAGE" mypy apps config - name: Pytest - run: docker run --rm --network ci-net -e SECRET_KEY=ci-secret-key -e DATABASE_URL=postgres://nohype:nohype@ci-postgres:5432/nohype "$CI_IMAGE" pytest + run: docker run --rm --network container:ci-postgres -e SECRET_KEY=ci-secret-key -e DATABASE_URL=postgres://nohype:nohype@127.0.0.1:5432/nohype "$CI_IMAGE" pytest - name: Tailwind build (assert generated diff is clean) run: | docker run --rm \ - --network ci-net \ + --network container:ci-postgres \ -v "$PWD:/app" \ -w /app \ -e SECRET_KEY=ci-secret-key \ - -e DATABASE_URL=postgres://nohype:nohype@ci-postgres:5432/nohype \ + -e DATABASE_URL=postgres://nohype:nohype@127.0.0.1:5432/nohype \ "$CI_IMAGE" \ sh -lc "python manage.py tailwind install --no-input && python manage.py tailwind build" git diff --exit-code -- theme/static/css/styles.css @@ -63,7 +62,6 @@ jobs: if: always() run: | docker rm -f ci-postgres || true - docker network rm ci-net || true - name: Remove CI image if: always() @@ -80,8 +78,7 @@ jobs: run: docker build -t "$CI_IMAGE" . - name: Start PostgreSQL run: | - docker network create nightly-net - docker run -d --name nightly-postgres --network nightly-net \ + docker run -d --name nightly-postgres \ -e POSTGRES_DB=nohype \ -e POSTGRES_USER=nohype \ -e POSTGRES_PASSWORD=nohype \ @@ -96,9 +93,9 @@ jobs: exit 1 - name: Start dev server with seeded content run: | - docker run -d --name nightly-e2e --network nightly-net \ + docker run -d --name nightly-e2e --network container:nightly-postgres \ -e SECRET_KEY=ci-secret-key \ - -e DATABASE_URL=postgres://nohype:nohype@nightly-postgres:5432/nohype \ + -e DATABASE_URL=postgres://nohype:nohype@127.0.0.1:5432/nohype \ "$CI_IMAGE" \ sh -lc "python manage.py migrate --noinput && python manage.py seed_e2e_content && python manage.py runserver 0.0.0.0:8000" for i in $(seq 1 40); do @@ -111,7 +108,7 @@ jobs: exit 1 - name: Run nightly Playwright journey run: | - docker exec nightly-e2e playwright install chromium + docker exec nightly-e2e python -m playwright install chromium docker exec -e E2E_BASE_URL=http://127.0.0.1:8000 nightly-e2e \ pytest -o addopts='' apps/core/tests/test_nightly_e2e_playwright.py -q - name: Remove nightly container @@ -119,7 +116,6 @@ jobs: run: | docker rm -f nightly-e2e || true docker rm -f nightly-postgres || true - docker network rm nightly-net || true - name: Remove CI image if: always() run: docker image rm -f "$CI_IMAGE" || true diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1cb2c72..3d10c36 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -23,8 +23,7 @@ jobs: - name: Start PostgreSQL run: | - docker network create ci-net - docker run -d --name ci-postgres --network ci-net \ + docker run -d --name ci-postgres \ -e POSTGRES_DB=nohype \ -e POSTGRES_USER=nohype \ -e POSTGRES_PASSWORD=nohype \ @@ -39,22 +38,22 @@ jobs: exit 1 - name: Ruff - run: docker run --rm --network ci-net -e SECRET_KEY=ci-secret-key -e DATABASE_URL=postgres://nohype:nohype@ci-postgres:5432/nohype "$CI_IMAGE" ruff check . + run: docker run --rm --network container:ci-postgres -e SECRET_KEY=ci-secret-key -e DATABASE_URL=postgres://nohype:nohype@127.0.0.1:5432/nohype "$CI_IMAGE" ruff check . - name: Mypy - run: docker run --rm --network ci-net -e SECRET_KEY=ci-secret-key -e DATABASE_URL=postgres://nohype:nohype@ci-postgres:5432/nohype "$CI_IMAGE" mypy apps config + run: docker run --rm --network container:ci-postgres -e SECRET_KEY=ci-secret-key -e DATABASE_URL=postgres://nohype:nohype@127.0.0.1:5432/nohype "$CI_IMAGE" mypy apps config - name: Pytest - run: docker run --rm --network ci-net -e SECRET_KEY=ci-secret-key -e DATABASE_URL=postgres://nohype:nohype@ci-postgres:5432/nohype "$CI_IMAGE" pytest + run: docker run --rm --network container:ci-postgres -e SECRET_KEY=ci-secret-key -e DATABASE_URL=postgres://nohype:nohype@127.0.0.1:5432/nohype "$CI_IMAGE" pytest - name: Tailwind build (assert generated diff is clean) run: | docker run --rm \ - --network ci-net \ + --network container:ci-postgres \ -v "$PWD:/app" \ -w /app \ -e SECRET_KEY=ci-secret-key \ - -e DATABASE_URL=postgres://nohype:nohype@ci-postgres:5432/nohype \ + -e DATABASE_URL=postgres://nohype:nohype@127.0.0.1:5432/nohype \ "$CI_IMAGE" \ sh -lc "python manage.py tailwind install --no-input && python manage.py tailwind build" git diff --exit-code -- theme/static/css/styles.css @@ -63,7 +62,6 @@ jobs: if: always() run: | docker rm -f ci-postgres || true - docker network rm ci-net || true - name: Remove CI image if: always() @@ -80,8 +78,7 @@ jobs: run: docker build -t "$CI_IMAGE" . - name: Start PostgreSQL run: | - docker network create nightly-net - docker run -d --name nightly-postgres --network nightly-net \ + docker run -d --name nightly-postgres \ -e POSTGRES_DB=nohype \ -e POSTGRES_USER=nohype \ -e POSTGRES_PASSWORD=nohype \ @@ -96,9 +93,9 @@ jobs: exit 1 - name: Start dev server with seeded content run: | - docker run -d --name nightly-e2e --network nightly-net \ + docker run -d --name nightly-e2e --network container:nightly-postgres \ -e SECRET_KEY=ci-secret-key \ - -e DATABASE_URL=postgres://nohype:nohype@nightly-postgres:5432/nohype \ + -e DATABASE_URL=postgres://nohype:nohype@127.0.0.1:5432/nohype \ "$CI_IMAGE" \ sh -lc "python manage.py migrate --noinput && python manage.py seed_e2e_content && python manage.py runserver 0.0.0.0:8000" for i in $(seq 1 40); do @@ -111,7 +108,7 @@ jobs: exit 1 - name: Run nightly Playwright journey run: | - docker exec nightly-e2e playwright install chromium + docker exec nightly-e2e python -m playwright install chromium docker exec -e E2E_BASE_URL=http://127.0.0.1:8000 nightly-e2e \ pytest -o addopts='' apps/core/tests/test_nightly_e2e_playwright.py -q - name: Remove nightly container @@ -119,7 +116,6 @@ jobs: run: | docker rm -f nightly-e2e || true docker rm -f nightly-postgres || true - docker network rm nightly-net || true - name: Remove CI image if: always() run: docker image rm -f "$CI_IMAGE" || true diff --git a/apps/core/tests/test_nightly_e2e_playwright.py b/apps/core/tests/test_nightly_e2e_playwright.py index 4359713..af38e24 100644 --- a/apps/core/tests/test_nightly_e2e_playwright.py +++ b/apps/core/tests/test_nightly_e2e_playwright.py @@ -37,6 +37,11 @@ def test_nightly_playwright_journey() -> None: page.goto(f"{base_url}/feed/", wait_until="networkidle") feed_content = page.content() - assert "