a3cb6dbacf
This reverts commit 5a7f39726b.
31 lines
2.6 KiB
Markdown
31 lines
2.6 KiB
Markdown
# 两机镜像部署
|
||
|
||
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 身份与权限、数据库迁移和公网健康仍需首次运行工作流验收。
|