fix(ci): 生产环境部署也通过 CI 渲染 .env(避免 DOUBAO 等密钥丢失导致 AI 502) #1961

Merged
xiaoxia merged 1 commits from fix/production-doubao-env-pipeline into develop 2026-09-16 12:50:28 +08:00
Owner

背景

#1958 已修复 staging 上 DOUBAO_API_KEY 丢失导致 AI 端点 502 的问题。但审查发现 deploy-production 没有 Render .env 步骤,直接读取服务器上手写的 /var/lib/xiaoxia-saas-production/.env,下次 release 到 main 时生产 AI 端点会复现同样的 502。

变更

  • .gitea/workflows/ci-pipeline.yml
    • deploy-production 新增 Render .env from template 步骤,复用 scripts/render_env.sh production(含 DOUBAO_API_KEY/MODEL/BASE_URL 等共用 secrets)
    • Deploy production over SSH 步骤在 docker pull 之前:
      1. 下载服务器当前 .env 做 config diff 检查(与 staging 一致)
      2. 备份服务器旧 .env
      3. SCP 上传 CI 渲染后的 .env.rendered
      4. 最后清理 CI runner 上的渲染文件
  • scripts/ci_production_deploy.sh
    • 启动容器前校验 ENV_FILE 是否存在,不存在时给出清晰错误提示(对齐 staging 脚本)

验证

  • ✅ scripts/render_env.sh production 本地验证:替换 15 个变量,无残留占位符,DOUBAO_* 正确注入
  • ✅ ci_production_deploy.sh 通过 bash -n 语法检查
  • ✅ ci-pipeline.yml 通过 PyYAML 解析校验
  • Staging 端 AI 端点已实测 200(ai-rewrite 返回真实改写文案)

备注

  • PRODUCTION_DATABASE_URL / PRODUCTION_REDIS_URL / PRODUCTION_JWT_SECRET_KEY 等基础设施 secrets 已存在于 Gitea Actions
  • DOUBAO_API_KEY / DOUBAO_MODEL / DOUBAO_BASE_URL 等共用 secrets 已在 #1958 中配置
## 背景 #1958 已修复 staging 上 DOUBAO_API_KEY 丢失导致 AI 端点 502 的问题。但审查发现 deploy-production 没有 Render .env 步骤,直接读取服务器上手写的 /var/lib/xiaoxia-saas-production/.env,下次 release 到 main 时生产 AI 端点会复现同样的 502。 ## 变更 - `.gitea/workflows/ci-pipeline.yml` - deploy-production 新增 **Render .env from template** 步骤,复用 scripts/render_env.sh production(含 DOUBAO_API_KEY/MODEL/BASE_URL 等共用 secrets) - **Deploy production over SSH** 步骤在 docker pull 之前: 1. 下载服务器当前 .env 做 config diff 检查(与 staging 一致) 2. 备份服务器旧 .env 3. SCP 上传 CI 渲染后的 .env.rendered 4. 最后清理 CI runner 上的渲染文件 - `scripts/ci_production_deploy.sh` - 启动容器前校验 ENV_FILE 是否存在,不存在时给出清晰错误提示(对齐 staging 脚本) ## 验证 - ✅ scripts/render_env.sh production 本地验证:替换 15 个变量,无残留占位符,DOUBAO_* 正确注入 - ✅ ci_production_deploy.sh 通过 bash -n 语法检查 - ✅ ci-pipeline.yml 通过 PyYAML 解析校验 - Staging 端 AI 端点已实测 200(ai-rewrite 返回真实改写文案) ## 备注 - PRODUCTION_DATABASE_URL / PRODUCTION_REDIS_URL / PRODUCTION_JWT_SECRET_KEY 等基础设施 secrets 已存在于 Gitea Actions - DOUBAO_API_KEY / DOUBAO_MODEL / DOUBAO_BASE_URL 等共用 secrets 已在 #1958 中配置
xiaoxia added 1 commit 2026-09-16 12:36:58 +08:00
fix(ci): 生产环境部署也通过 CI 渲染 + 上传 .env(与 staging 对齐,避免 DOUBAO 等密钥丢失)
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m15s
Preview Deploy / Deploy Preview Environment (pull_request) Failing after 10m20s
AI Code Review / AI Code Review (pull_request) Failing after 10m23s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 10m5s
ACR Cleanup / ACR Image Cleanup (pull_request_target) Successful in 11s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 19s
50b413a6fa
- deploy-production 新增 Render .env from template 步骤(复用 render_env.sh production)
- Deploy production over SSH 在拉镜像前加 SCP 上传渲染后的 .env + config diff 检查
- ci_production_deploy.sh: .env 不存在时给出清晰错误提示(对齐 staging)

本次主因修复:#1958 只补了 staging 的 DOUBAO 注入路径,但生产环境
deploy-production 直接读取服务器上手写的 .env,下次 release 到 main 时
AI 端点同样会因缺 DOUBAO_API_KEY 返回 502。本次同步补齐,确保生产也走
CI 统一渲染管线。
xiaoxia merged commit 3eb2fcf3ec into develop 2026-09-16 12:50:28 +08:00

🗑️ 预览环境已清理

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

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

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