chore(ci): 端口与PG配置常量集中管理,清理硬编码 #811

Merged
xiaoxia merged 1 commits from ci/port-env-cleanup into develop 2026-07-24 11:43:05 +08:00
Owner

变更内容

新增

  • scripts/ci/ci_env.sh — CI共享常量文件,集中管理端口/用户/密码/DB名等配置

修改

  • scripts/ci/validate_migration.sh — source ci_env.sh,移除SHARED_PG_PORT/USER/PASSWORD硬编码
  • scripts/ci/run_validate.sh — 同上
  • scripts/ci/run_integration_tests.sh — 同上
  • .gitea/workflows/ci-pipeline.yml — workflow级env变量统一管理,两处DATABASE_URL从硬编码改为变量引用

清理清单

  • 3个脚本中的 SHARED_PG_PORT="5433"${CI_SHARED_PG_PORT}
  • 3个脚本中的 SHARED_PG_USER="postgres"${CI_SHARED_PG_USER}
  • 3个脚本中的 SHARED_PG_PASSWORD="ci_pg_2026!"${CI_SHARED_PG_PASSWORD}
  • yml中2处 host.docker.internal:5432 硬编码 → ${{ env.CI_PG_HOST }}:${{ env.CI_PG_PORT }}

好处

  • 配置统一管理,修改一处全局生效
  • 支持通过环境变量覆盖默认值(如Runner配置变化时无需改代码)
  • 消除重复硬编码,降低维护成本
## 变更内容 ### 新增 - `scripts/ci/ci_env.sh` — CI共享常量文件,集中管理端口/用户/密码/DB名等配置 ### 修改 - `scripts/ci/validate_migration.sh` — source ci_env.sh,移除SHARED_PG_PORT/USER/PASSWORD硬编码 - `scripts/ci/run_validate.sh` — 同上 - `scripts/ci/run_integration_tests.sh` — 同上 - `.gitea/workflows/ci-pipeline.yml` — workflow级env变量统一管理,两处DATABASE_URL从硬编码改为变量引用 ### 清理清单 - 3个脚本中的 `SHARED_PG_PORT="5433"` → `${CI_SHARED_PG_PORT}` - 3个脚本中的 `SHARED_PG_USER="postgres"` → `${CI_SHARED_PG_USER}` - 3个脚本中的 `SHARED_PG_PASSWORD="ci_pg_2026!"` → `${CI_SHARED_PG_PASSWORD}` - yml中2处 `host.docker.internal:5432` 硬编码 → `${{ env.CI_PG_HOST }}:${{ env.CI_PG_PORT }}` ### 好处 - 配置统一管理,修改一处全局生效 - 支持通过环境变量覆盖默认值(如Runner配置变化时无需改代码) - 消除重复硬编码,降低维护成本
xiaoxia added 1 commit 2026-07-24 10:52:31 +08:00
chore(ci): 端口与PG配置常量集中管理,清理硬编码
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 10s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 1m23s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 1m12s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 39s
CI/CD Pipeline / Build Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / PR Build Web Image (pull_request) Successful in 32s
CI/CD Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Validate - Code Quality (pull_request) Successful in 5m1s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 3m31s
Preview Deploy / Deploy Preview Environment (pull_request) Failing after 21s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m33s
AI Code Review / AI Code Review (pull_request) Successful in 7m29s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 9m53s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / Build Production API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Unit Tests (pull_request) Successful in 7m28s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / Integration Tests (pull_request) Successful in 3m46s
CI/CD Pipeline / Deploy Production (pull_request) Has been skipped
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 48m39s
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / ACR Image Cleanup (pull_request) Has been skipped
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 23s
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
764ac311ee
- 新增 scripts/ci/ci_env.sh 统一管理CI共享常量(端口/用户/密码/DB名)
- 3个CI脚本(validate_migration/run_validate/run_integration_tests)
  source ci_env.sh,移除SHARED_PG_PORT/USER/PASSWORD等硬编码
- ci-pipeline.yml新增workflow级env变量,两处DATABASE_URL从硬编码改为变量引用
- 支持通过环境变量覆盖默认值,便于后续配置调整
Collaborator

代码审查结果 - PR #811

⚠️ 问题(2个需要修改)

  1. scripts/ci/run_integration_tests.sh 第228行临时容器使用了错误的数据库凭据

    • 问题描述:在 else 分支(启动临时 PostgreSQL 容器)中,DATABASE_URL 使用了 ${CI_SHARED_PG_USER}${CI_SHARED_PG_PASSWORD}
    • 后果CI_SHARED_PG_PASSWORD 是用于连接“常驻共享 PG 实例”的密码(ci_pg_2026!)。新启动的 postgres:16 临时容器默认并未设置此密码(除非 docker run 命令中未显示的 diff 部分传递了 -e POSTGRES_PASSWORD,否则默认为空或 trust)。这将导致在 CI_USE_SHARED_PG=false 时,数据库连接认证失败,CI 任务崩溃。
  2. scripts/ci/run_validate.sh 第463行临时容器使用了错误的数据库凭据

    • 问题描述:同上,在 else 分支中构建 DATABASE_URL 时使用了共享实例的密码变量 ${CI_SHARED_PG_PASSWORD}
    • 后果:导致临时数据库连接认证失败。
  3. .gitea/workflows/ci-pipeline.yml 第33行敏感信息硬编码

    • 问题描述:CI 配置文件和 ci_env.sh 中硬编码了数据库密码 ci_pg_2026!
    • 后果:虽然这是 CI 配置,但将具有特定含义的密码明文提交到代码库存在安全风险。如果该密码用于其他环境或包含敏感信息,应迁移到 Gitea Secrets 中管理。

💡 建议(1个可选)

  1. scripts/ci/ci_env.sh增加临时数据库的独立配置项
    • 具体内容:当前 ci_env.sh 仅定义了 CI_SHARED_PG_* 变量,但在脚本中被误用于临时容器。建议增加 CI_LOCAL_PG_USERCI_LOCAL_PG_PASSWORD(默认为 postgres),并在脚本的 else 分支中使用这些独立变量,以明确区分“共享实例”和“临时实例”的配置,避免逻辑混淆。

格式检查通过 | 逻辑审查需修改 | ⚠️ 建议关注性能


🤖 由 AI 代码审查机器人自动生成 | 2026-07-24 03:18:22 | 模型:

## 代码审查结果 - PR #811 ### ⚠️ 问题(2个需要修改) 1. **scripts/ci/run_integration_tests.sh 第228行**:**临时容器使用了错误的数据库凭据** - **问题描述**:在 `else` 分支(启动临时 PostgreSQL 容器)中,`DATABASE_URL` 使用了 `${CI_SHARED_PG_USER}` 和 `${CI_SHARED_PG_PASSWORD}`。 - **后果**:`CI_SHARED_PG_PASSWORD` 是用于连接“常驻共享 PG 实例”的密码(`ci_pg_2026!`)。新启动的 `postgres:16` 临时容器默认并未设置此密码(除非 `docker run` 命令中未显示的 diff 部分传递了 `-e POSTGRES_PASSWORD`,否则默认为空或 trust)。这将导致在 `CI_USE_SHARED_PG=false` 时,数据库连接认证失败,CI 任务崩溃。 2. **scripts/ci/run_validate.sh 第463行**:**临时容器使用了错误的数据库凭据** - **问题描述**:同上,在 `else` 分支中构建 `DATABASE_URL` 时使用了共享实例的密码变量 `${CI_SHARED_PG_PASSWORD}`。 - **后果**:导致临时数据库连接认证失败。 3. **.gitea/workflows/ci-pipeline.yml 第33行**:**敏感信息硬编码** - **问题描述**:CI 配置文件和 `ci_env.sh` 中硬编码了数据库密码 `ci_pg_2026!`。 - **后果**:虽然这是 CI 配置,但将具有特定含义的密码明文提交到代码库存在安全风险。如果该密码用于其他环境或包含敏感信息,应迁移到 Gitea Secrets 中管理。 ### 💡 建议(1个可选) 1. **scripts/ci/ci_env.sh**:**增加临时数据库的独立配置项** - **具体内容**:当前 `ci_env.sh` 仅定义了 `CI_SHARED_PG_*` 变量,但在脚本中被误用于临时容器。建议增加 `CI_LOCAL_PG_USER` 和 `CI_LOCAL_PG_PASSWORD`(默认为 `postgres`),并在脚本的 `else` 分支中使用这些独立变量,以明确区分“共享实例”和“临时实例”的配置,避免逻辑混淆。 --- ✅ 格式检查通过 | ❌ 逻辑审查需修改 | ⚠️ 建议关注性能 --- <sub>🤖 由 AI 代码审查机器人自动生成 | 2026-07-24 03:18:22 | 模型: </sub> <!-- AI_CODE_REVIEW_AUTO_COMMENT -->
xiaoxia merged commit 94afec2b9c into develop 2026-07-24 11:43:05 +08:00

🗑️ 预览环境已清理

PR #811 已关闭或合并,对应的预览环境已被清理。

如有需要,可以重新打开 PR 来重新生成预览环境。

🗑️ **预览环境已清理** PR #811 已关闭或合并,对应的预览环境已被清理。 > 如有需要,可以重新打开 PR 来重新生成预览环境。
Sign in to join this conversation.