Files
worldquant-alpha-system/.scratch/gitea-deployment/issues/01-remote-deployment.md
T

2.6 KiB
Raw Blame History

两机镜像部署

Type: task Status: ready-for-agent

要求

  • Runner 构建 backend/web 并推送 A 的 Gitea Packages,两个镜像成功后通过 SSH 部署 B。
  • B 仅接收 Compose、部署脚本和环境,拉取镜像后预检、互斥迁移及健康启动。
  • 数据库位于 C,B 通过 DATABASE_URL 连接 C 的内网地址,不再依赖 DATABASE_NETWORK。
  • 沿用 Gitea 应用配置及用户指定的 PROD_SSH_KEY、PROD_HOST、PROD_USER Secrets。
  • 保留原有本地/公网 Compose、数据库及单 worker 限制;更新部署说明。

验收

校验工作流与 Compose 配置、B 部署脚本的失败分支、SSH 环境特殊字符传输、临时认证文件清理。真实 A 推送及 B 部署不在本地验收中执行。

Comments

  • 2026-09-24:已开始实施,真实服务器连接参数由用户在 Gitea 配置。
  • 2026-09-24:本地实现完成。生产 Compose 改为纯镜像引用;工作流构建推送后通过 SSH 传递部署文件和环境,B 拉取、预检、加锁、迁移并等待健康状态。说明已同步。
  • 2026-09-24:按用户确认适配 B 应用/C 数据库分离,移除外部数据库网络及 DATABASE_NETWORK 的传递、必填校验;说明和测试同步更新。未设置该变量时,Compose 5.3.1 默认/jobs profile 校验通过,backend/migrate/web 均使用默认网络,远程数据库 URL 保持一致;8 个必填配置拒绝、Bash/工作流检查和 8 项模拟部署测试通过。未连接真实 B/C,实际容器到 C 的连通性仍需部署验收。

初次镜像部署验证结果(数据库拆分前)

  • 本机 Docker Compose 5.3.1 默认/jobs profile 展开通过;确认所有服务无 build、backend 与 migrate 共用提交镜像、外部数据库网络及回环端口保留,9 个必填 Compose 配置缺失均拒绝。
  • Workflow YAML、SSH Secrets 映射及 Bash 语法检查通过;模拟构建步骤验证成功顺序与 login/build/push 失败传播、认证目录清理。
  • python3 -m unittest discover -s scripts/tests -v:8 项通过,覆盖前置失败保护旧服务、锁归属、迁移失败不启动、健康失败返回非零、缺失配置、SSH 特殊字符传递与环境隔离、远端失败传播和临时文件清理。
  • 独立只读核验完成;停服后失败仍需人工处理,沿用既有迁移策略,避免未知 schema 状态下自动回退。
  • git diff --check 通过。Dockerfile/业务代码未改变,未重建真实镜像;真实 Gitea 推送、B SSH 身份与权限、数据库迁移和公网健康仍需首次运行工作流验收。