diff --git a/.gitea/workflows/cd.yaml b/.gitea/workflows/cd.yaml index a4e30d35..2ddc5d60 100644 --- a/.gitea/workflows/cd.yaml +++ b/.gitea/workflows/cd.yaml @@ -129,16 +129,23 @@ jobs: run: | cd apps/api docker compose -f docker-compose.test.yml up -d --wait - # psql 從 postgres container 執行,不需要主機安裝 psql + # schema 初始化 docker compose -f docker-compose.test.yml exec -T postgres-test \ psql -U awoooi -d awoooi_test \ -f /dev/stdin < tests/integration/setup_test_schema.sql - # 取 postgres container IP — runner 在 docker 內可直連 container IP - CONTAINER_NAME=$(docker ps --filter name=postgres-test --format '{{.Names}}' | head -1) - PG_IP=$(docker inspect "$CONTAINER_NAME" \ - --format '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' | awk '{print $1}') - echo "postgres-test: $CONTAINER_NAME @ $PG_IP:5432" - TEST_DATABASE_URL="postgresql+asyncpg://awoooi:awoooi_test_2026@${PG_IP}:5432/awoooi_test?ssl=disable" \ + # compose 網路名 (目錄名=api → api_default) + COMPOSE_NET=$(docker network ls --format '{{.Name}}' | grep '^api_default$' || \ + docker network ls --format '{{.Name}}' | grep 'default' | head -1) + echo "compose network: $COMPOSE_NET" + # 在同一 compose 網路的臨時 python container 內跑 pytest + # 掛載原始碼 + venv,hostname=postgres-test 直連 5432 + docker run --rm \ + --network "$COMPOSE_NET" \ + -v /opt/api-venv:/opt/api-venv \ + -v "$(pwd):/workspace" \ + -w /workspace \ + -e TEST_DATABASE_URL="postgresql+asyncpg://awoooi:awoooi_test_2026@postgres-test:5432/awoooi_test?ssl=disable" \ + python:3.11-slim \ /opt/api-venv/bin/pytest tests/integration/test_b5_core_flows.py -v --tb=short TEST_EXIT=$? docker compose -f docker-compose.test.yml down -v 2>/dev/null || true