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

31 lines
2.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 两机镜像部署
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 身份与权限、数据库迁移和公网健康仍需首次运行工作流验收。