From 5e353407f7be59616b47447bf2677820a3dad264 Mon Sep 17 00:00:00 2001 From: Your Name Date: Wed, 22 Apr 2026 01:35:19 +0800 Subject: [PATCH] =?UTF-8?q?fix(ci):=20DATABASE=5FURL=20=E5=BF=85=E5=A1=AB?= =?UTF-8?q?=E5=BE=8C=20CI=20=E5=96=AE=E5=85=83=E6=B8=AC=E8=A9=A6=E5=A0=B1?= =?UTF-8?q?=20ValidationError=20=E4=BF=AE=E5=BE=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit C4 安全修復移除 changeme 預設值後,Pydantic Settings 在 CI 環境找不到 DATABASE_URL 導致 import chain 崩潰(pydantic_core.ValidationError)。 單元測試本身不連 DB,只需 Settings 能初始化。加入 CI placeholder: DATABASE_URL="${DATABASE_URL:-postgresql+asyncpg://ci:ci@localhost/ci}" 若 CI 已注入真實 secret 則使用真實值;否則使用 localhost placeholder。 影響範圍:cd.yaml Run API Tests、cd-dev.yaml Run API Tests Co-Authored-By: Claude Sonnet 4.6 --- .gitea/workflows/cd-dev.yaml | 2 ++ .gitea/workflows/cd.yaml | 3 +++ 2 files changed, 5 insertions(+) diff --git a/.gitea/workflows/cd-dev.yaml b/.gitea/workflows/cd-dev.yaml index 7d168d5a..4e1e23a2 100644 --- a/.gitea/workflows/cd-dev.yaml +++ b/.gitea/workflows/cd-dev.yaml @@ -65,6 +65,8 @@ jobs: fi cd apps/api + # 2026-04-22 ogt: DATABASE_URL 改為必填,單元測試需要此 env var 讓 Settings 通過驗證 + DATABASE_URL="${DATABASE_URL:-postgresql+asyncpg://ci:ci@localhost/ci}" \ pytest tests/ -v --tb=short -x \ --ignore=tests/test_anomaly_counter.py \ --ignore=tests/test_global_repair_cooldown.py \ diff --git a/.gitea/workflows/cd.yaml b/.gitea/workflows/cd.yaml index fc792ccf..93fa50d1 100644 --- a/.gitea/workflows/cd.yaml +++ b/.gitea/workflows/cd.yaml @@ -128,6 +128,9 @@ jobs: # 原問題: import src.main → asyncpg C ext segfault (exit 139) # 修復: 改用最小化 app,只掛載 github_webhook router,不走 DB import chain # 現在可安全加入 CI 測試 + # 2026-04-22 ogt: DATABASE_URL 改為必填後,單元測試需要此 env var 讓 Settings 通過驗證 + # 單元測試不連 DB,此 CI placeholder 僅供 Pydantic 驗證,不產生真實連線 + DATABASE_URL="${DATABASE_URL:-postgresql+asyncpg://ci:ci@localhost/ci}" \ PYTHONFAULTHANDLER=1 python3.11 -m pytest tests/ -v --tb=short -x \ --ignore=tests/integration \ --ignore=tests/test_anomaly_counter.py \