From ba5ace8ca8be2e854cba568e267cd0fa5dc3f546 Mon Sep 17 00:00:00 2001 From: OG T Date: Fri, 10 Apr 2026 14:38:28 +0800 Subject: [PATCH] =?UTF-8?q?fix(ci):=20B5=20=E7=94=A8=20docker=20cp=20?= =?UTF-8?q?=E5=82=B3=E4=BB=A3=E7=A2=BC=E9=80=B2=20container=EF=BC=8C?= =?UTF-8?q?=E8=A7=A3=E6=B1=BA=20DinD=20volume=20=E5=95=8F=E9=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit DinD 下 volume mount 指向 host 路徑(不存在),改用: 1. docker create 建 container(共享 postgres 網路命名空間) 2. docker cp 把代碼複製進去 3. docker start -a 執行,取 exit code Co-Authored-By: Claude Sonnet 4.6 --- .gitea/workflows/cd.yaml | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/.gitea/workflows/cd.yaml b/.gitea/workflows/cd.yaml index e663c5e5..d857f6e4 100644 --- a/.gitea/workflows/cd.yaml +++ b/.gitea/workflows/cd.yaml @@ -135,14 +135,18 @@ jobs: < tests/integration/setup_test_schema.sql PG_CONTAINER=$(docker ps --filter name=postgres-test --format '{{.Names}}' | head -1) echo "postgres container: $PG_CONTAINER" - # 在 postgres container 的網路命名空間內跑 pytest,localhost:5432 直連 - docker run --rm \ + # DinD: volume mount 不可靠,用 docker cp 把代碼放進臨時 container + # 共享 postgres container 網路命名空間,localhost:5432 直連 + PYTEST_CTR=$(docker create \ --network "container:${PG_CONTAINER}" \ - -v /opt/api-venv:/opt/api-venv \ - -v "$(pwd):/workspace" -w /workspace \ + -w /workspace \ -e TEST_DATABASE_URL="postgresql+asyncpg://awoooi:awoooi_test_2026@localhost:5432/awoooi_test?ssl=disable" \ python:3.11-slim \ - /opt/api-venv/bin/pytest tests/integration/test_b5_core_flows.py -v --tb=short + sh -c "pip install -q uv && uv pip install -q --system -e '.[dev]' && pytest tests/integration/test_b5_core_flows.py -v --tb=short") + docker cp . "$PYTEST_CTR:/workspace" + docker start -a "$PYTEST_CTR" + TEST_EXIT=$? + docker rm "$PYTEST_CTR" 2>/dev/null || true TEST_EXIT=$? docker compose -f docker-compose.test.yml down -v 2>/dev/null || true exit $TEST_EXIT