四个生产工作流改用同一条发布修订:最近一次代码门禁成功的提交可以发布,后面只多文档不再挡住。生产环境拒绝测试验证码。63 个还没上生产的迁移写了分级、演练脚本和首发步骤。没有点任何生产按钮。 自测:发布修订 7 通过,演练安全 3 通过,tsc 0 错,lint 0 error。本机空库演练在服务角色读人物表处按设计停止(退出码 4,其他人物已确认行数为 0)。 Co-Authored-By: Grok (agent loop)
3.4 KiB
3.4 KiB
PROGRESS · 发布通路改规则 + 生产首发(2026-10-14)
- 分支:
codex/release-path-production-20261014 - 基线:从
origin/staging新建,开工 HEADf4c53e7f9fad1a3de08b613c3470f8e4a2f62116。任务书里的48a2fadd是更早的记录;74384be0是本基线的祖先。 - 开工时测试环境健康检查的版本号与这个 HEAD 相同。收尾时公开健康检查已变成
cb8004a188afd51ec440a7678f91be801fbd3147,本分支没有变基到那个提交。本轮没有改测试环境。 - 预检
scripts/pre_work_check.py:远端仓库可见,Python 可用。碎片扫描 90 秒超时,聚焦测试 45 秒超时。不能写成预检通过。 - 编号:本树
docs/BUG_HISTORY.md最大号原是 BUG-1346。BUG-1347 在另一条还没合入的分支上,本单用 BUG-1348、BUG-1349,避免以后撞号。
做了什么
- 四个生产工作流共用
deploy/resolve-release-revision.sh。发布修订是最近一次代码门禁成功的提交。测试环境头可以在它后面只多文档。回滚仍走原来的确认和祖先检查。 - 生产环境拒绝测试验证码:环境校验看见这个变量就失败;运行时如果站点是生产域名并且配了验证码,就拒绝启动。
- 63 个新增迁移的清单、演练脚本、首发步骤和发布后核对都写好了。迁移演练没有单独的 Gitea 按钮,这是决策记录只授权四个工作流之后的做法。
- 没有点任何生产按钮,没有推
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 做,本机这次不能代替主机恢复点。