fix(ci): B5 用 docker cp 傳代碼進 container,解決 DinD volume 問題
Some checks failed
CD Pipeline / build-and-deploy (push) Has been cancelled

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 <noreply@anthropic.com>
This commit is contained in:
OG T
2026-04-10 14:38:28 +08:00
parent 0225a221b1
commit ba5ace8ca8

View File

@@ -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 的網路命名空間內跑 pytestlocalhost: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