四个生产工作流改用同一条发布修订:最近一次代码门禁成功的提交可以发布,后面只多文档不再挡住。生产环境拒绝测试验证码。63 个还没上生产的迁移写了分级、演练脚本和首发步骤。没有点任何生产按钮。 自测:发布修订 7 通过,演练安全 3 通过,tsc 0 错,lint 0 error。本机空库演练在服务角色读人物表处按设计停止(退出码 4,其他人物已确认行数为 0)。 Co-Authored-By: Grok (agent loop)
48 lines
3.4 KiB
Markdown
48 lines
3.4 KiB
Markdown
# PROGRESS · 发布通路改规则 + 生产首发(2026-10-14)
|
||
|
||
- 分支:`codex/release-path-production-20261014`
|
||
- 基线:从 `origin/staging` 新建,开工 HEAD `f4c53e7f9fad1a3de08b613c3470f8e4a2f62116`。任务书里的 `48a2fadd` 是更早的记录;`74384be0` 是本基线的祖先。
|
||
- 开工时测试环境健康检查的版本号与这个 HEAD 相同。收尾时公开健康检查已变成 `cb8004a188afd51ec440a7678f91be801fbd3147`,本分支没有变基到那个提交。本轮没有改测试环境。
|
||
- 预检 `scripts/pre_work_check.py`:远端仓库可见,Python 可用。碎片扫描 90 秒超时,聚焦测试 45 秒超时。不能写成预检通过。
|
||
- 编号:本树 `docs/BUG_HISTORY.md` 最大号原是 BUG-1346。BUG-1347 在另一条还没合入的分支上,本单用 BUG-1348、BUG-1349,避免以后撞号。
|
||
|
||
## 做了什么
|
||
|
||
1. 四个生产工作流共用 `deploy/resolve-release-revision.sh`。发布修订是最近一次代码门禁成功的提交。测试环境头可以在它后面只多文档。回滚仍走原来的确认和祖先检查。
|
||
2. 生产环境拒绝测试验证码:环境校验看见这个变量就失败;运行时如果站点是生产域名并且配了验证码,就拒绝启动。
|
||
3. 63 个新增迁移的清单、演练脚本、首发步骤和发布后核对都写好了。迁移演练没有单独的 Gitea 按钮,这是决策记录只授权四个工作流之后的做法。
|
||
4. 没有点任何生产按钮,没有推 `staging` 或 `main`。
|
||
|
||
## 自测
|
||
|
||
| 命令 | 结果 |
|
||
| --- | --- |
|
||
| `tests/test_resolve_release_revision.py` | 7 通过 |
|
||
| `tests/test_rehearse_production_migrations.py` | 3 通过。拒绝非生产路径、拒绝生产库名、计划输出把停止文件留在第二批 |
|
||
| `tsc --noEmit -p frontend` | 0 错 |
|
||
| `npm run lint --prefix frontend` | 0 error,125 条原有 warning |
|
||
| 四个生产工作流 | `js-yaml` 能解析 |
|
||
| 新脚本 `bash -n` | 通过(工作流测试里的语法检查那一条通过) |
|
||
| 生产发布、恢复点、生产迁移、手动发布门的文本合同 | 通过 |
|
||
| 生产站拒绝测试验证码的身份配置测试 | 通过 |
|
||
|
||
同一批前端测试文件里还有 8 条失败,0 条取消。它们是这台 Windows 机器的环境,不是把断言改弱:
|
||
|
||
- 环境文件校验要求 Unix 权限 `0600`。Git Bash 里 `chmod 600` 之后 `stat` 仍是 `644`,脚本在看到验证码检查之前就停了。
|
||
- 工作流 YAML 检查找到的 `python` 是 Windows 占位程序,退出码 9009。四个生产文件另用项目里的 `js-yaml` 解析通过。
|
||
- 两条同步测试缺 `rsync`。
|
||
- 一条回滚测试在临时目录上 `install` 改权限被拒绝。
|
||
- 纯文档范围脚本在这台机器上没有 `python3`,退出码 49。发布修订测试用仓库里的 Python 跑过了同一条判断。
|
||
|
||
## 迁移演练(本机一次性库)
|
||
|
||
空库,角色按主机引导脚本的名字建好,没有真实个人资料。`deploy/rehearse-production-migrations.sh` 在本地模式跑完:
|
||
|
||
- 停止文件之前 160 个迁移,全部应用后 174 个。
|
||
- `other_person_accepted_rows=0`
|
||
- 两条标题修补 NOTICE 都是 0
|
||
- 网页角色读账户资料、读会话列表:true
|
||
- 服务角色读人物表:false,退出码 4
|
||
|
||
这是预期停止。BUG-1063 的授权不在这 63 个文件里。演练库已删除。在那笔授权进入这一批之前,不要点生产迁移。主机上的正式演练仍由产品按 runbook 做,本机这次不能代替主机恢复点。
|