Files

44 lines
3.4 KiB
Markdown
Raw Permalink Normal View History

# SiteForge V8.13 — P5 发布闭环的交付与验收清单
版本:`8.13.0-dev.1`。此报告区分 **源代码实现/本地自动化测试** 与 **Docker/外部生产实机验收**。
## 本轮实现与已有能力
| 验收点 | 当前状态 | 证据 / 限制 |
|---|---|---|
| 构建完成且 ZIP 可用 | 已实现与单元测试 | `release_api.approved` + `_archive_for` |
| 静态质量、SEO 迁移审核、独立审批 | 已有代码 + 本轮 API 专项测试 | 未审批返回 409,迁移站差异会阻断 |
| Web 不执行远程大文件上传 | 已实现 | API 提交 `remote_deploy` / `remote_rollback` 任务,返回 HTTP 202 |
| 任务超时、幂等、容量、取消 | 已有 Worker + 本轮补充测试 | 单机 SQLite 租约;不是多区域事务 |
| 远程 ZIP 不可变暂存 | 已实现与签名 Agent 模拟测试 | 按存档 SHA256 前 20 位命名,不更改 current |
| 远程文件 SHA256、清单核验 | 已实现与模拟测试 | 篡改文件后拒绝激活 |
| 单次版本切换 | 已实现与模拟测试 | `current` 指针文件通过 `os.replace` 原子替换 |
| 激活后二次校验与首页探针 | 已实现与模拟测试 | 比对 Agent 公开首页的 SHA256;不等于真实域名探测 |
| 异步历史版本回滚 | 已实现与模拟测试 | 仅回滚数据库记录中该站点该目标的版本;验真后切换 |
| 目标密钥不进入前端 | 已实现的环境引用方案 | 推荐挂载到 `/run/secrets`,待生产轮换验收 |
| SFTP / S3 原生连接器 | **未实现** | HTTPS 发布 Agent 为当前唯一可运行的远程目标类型 |
| 真实 Docker、外网 TLS、CDN、域名 | **待实机验收** | 当前环境无 Docker Engine;没有公网发布测试服务器 |
| 发布取消在切换瞬间的跨服务一致性 | **未完全解决** | 需增加远程状态 reconciliation / 运维确认 |
| PostgreSQL/Redis 多 Worker | **待生产验收** | 独立 Compose 已配置但未完成真实高可用测试 |
## 确定性专项测试
- 不经过激活就上传两个版本时,当前线上指针保持不变。
- 篡改 staging 文件后,Agent 拒绝激活且旧站保持可访问。
- 伪造签名、非法 ZIP 路径、保留文件名、同名冲突会被拒绝。
- 已批准构建通过异步 API 提交,在队列中去重;未批准构建禁止提交。
- 运行签名 Agent 的完整暂存、校验、激活、再次验证、回滚逻辑(本地 TestClient 模拟)。
- 任务数量达到上限时拒绝新任务;取消排队任务不影响已发布内容。
## 正式上线前需要的人工/环境门禁
1. Docker 一条命令在全新宿主机成功启动 Web 与 Worker,并验证 `/api/health` 精确报告版本/提交。
2. 将 Agent 部署于真实 HTTPS 测试域名,独立密钥及 TLS 证书有效;仅开放预期入口。
3. 在授权测试网站完成两轮发布,故障注入覆盖上传中断、校验失败、切换成功后 Web 超时、Worker 取消。
4. 核对站点正式域名的首页、产品详情、404、canonical、sitemap、robots、媒体与链接。
5. 验证真实站点切换/回滚并确认时间、缓存失效、老 URL 保留。
6. 审计密钥轮换、管理员/审核人权限、备份/恢复和日志中的敏感数据。
7. 完成 SFTP/S3 等其它发布方式后,逐个通过等价事务性/故障恢复门禁。
**结论**:V8.13 的 HTTPS Agent 远程发布形成了本地可测试的发布闭环;尚不符合全部 P5 生产验收条件。