docs(08-08-production-deployment-validation): 补齐部署验证规范与证据边界
这个提交包含在:
@@ -69,9 +69,13 @@
|
||||
|
||||
## B. 发布(Deploy)
|
||||
- [ ] 本地工作树 clean,目标 commit 已进入 upstream;部署日志中的 commit 与 `/ready.data.buildSha` 一致
|
||||
- [ ] **生产迁移先行门禁**:仅通过进程环境显式提供 `EXPECTED_PRODUCTION_ORIGIN`、`EXPECTED_PRODUCTION_DB_NAME`、`EXPECTED_PENDING_MIGRATIONS`;未把目标值写入仓库、日志或报告
|
||||
- [ ] **生产 target gate**:已确认 HTTPS origin 与数据库身份均为预期生产目标,明确排除回环、本地回归库、staging/trialrun;不得套用本地任务“必须是回环地址”的判据
|
||||
- [ ] **pre-status 在写入前**:运行时 `DATABASE_URL` host/DB 身份先通过;`prisma migrate status` 原始输出仅留受控现场、脱敏副本已保存并人工阅读;候选 manifest 与 `_prisma_migrations` 对账通过,pending 与批准 allowlist 精确一致,status 报出的 pending ID 均属于候选 manifest;failed/rolled-back/diverged/未知项为 0
|
||||
- [ ] pre-status、target gate 或对账失败时保持 PAUSED,未进入 `deploy.sh`;未执行 `migrate dev`、reset、db push、resolve、手工 DDL、seed 或业务写入
|
||||
- [ ] **EXTERNAL_GATED**:操作人已在边缘暂停 `/api/auth/forgot-password`、`/api/auth/reset-password`、`/api/auth/email-login/code`、`/api/auth/email-login/verify`;部署脚本不会自动修改边缘配置,未人工确认四端点关闭不得发布,配置预检、迁移、新应用和 smoke 全部通过后才人工恢复
|
||||
- [ ] 标准路径已成功刷新 upstream;若因受控离线恢复使用 unpublished override,日志包含批准原因码和 `UNPUBLISHED-OVERRIDE` 标识
|
||||
- [ ] 已有部署通过 `DEPLOY_SERVER=<deploy-ssh-target> DEPLOY_REFRESH_SERVER=<forced-command-ssh-target> bash deploy/trialrun/deploy-existing.sh` 执行;首次初始化才使用完整显式参数的 `deploy.sh`
|
||||
- [ ] 已有部署通过 `deploy/trialrun/deploy-existing.sh` 执行;生产迁移已按 §2.0 提供三个 `EXPECTED_*` 进程变量;首次初始化才使用完整显式参数的 `deploy.sh`
|
||||
- [ ] forced-command 使用独立专用 key,同一 key 不存在不受限 root 授权;root-owned target 只接受精确 `probe/refresh`,不调用部署用户可写仓库脚本
|
||||
- [ ] 13 项聚合体检在任何 mkdir/rsync 前全部执行并汇总;报告只有固定检查名与 PASS/FAIL,任一失败均阻断同步
|
||||
- [ ] 未从 Compose `working_dir` 猜仓库根目录;同步前 preflight 已确认仓库根标识、普通远端 `.env`、PG_VERSION 与附件目录,且该检查发生在 rsync 之前
|
||||
@@ -97,6 +101,9 @@
|
||||
- [ ] 登录验证已由 live smoke 与 release gate 覆盖;仅首次接入或第三方后台配置变更时补做人工确认
|
||||
|
||||
## C. 发布后(Post-check)
|
||||
- [ ] wrapper 已在合同 refresh 前以空 pending allowlist 复跑只读 preflight,并保存/人工阅读部署后的第二份 `prisma migrate status` 脱敏副本(原始输出仅留受控现场);候选 migration 显示 applied/schema up to date,未只看退出码
|
||||
- [ ] 权限负向路径、合同详情只读检查和 `/ready`/smoke 均在任何真实 `terminated` 写入前完成;本次没有主动终止写入
|
||||
- [ ] 已记录 `rollbackWindow=OPEN|CLOSED`;首条已提交 `terminated` 记录产生时关闭,关闭后只允许 roll-forward/兼容 hotfix,不自动 drop 三列
|
||||
- [ ] 公网 live smoke(只读,不做写操作):`bash scripts/qa/run-web-gates.sh smoke-live`
|
||||
- [ ] 若本地已配置 `LIVE_SMOKE_*`,确认 `bash deploy/trialrun/deploy.sh` 输出中包含 live smoke 结果
|
||||
- [ ] 已确认 release gate / live smoke 结果为通过;关键链路不再作为每次发布的手工必做项
|
||||
|
||||
在新工单中引用
屏蔽一个用户