发布验收与回退检查清单

将代码检查、一次性集成验收、目标环境准入和回退证据组织成可签收的发布清单。

CI/CDDocker自动化

发布对象与责任人

先确认本次是代码、配置还是内容变更,记录提交、镜像标签、迁移文件、变更窗口和负责人。内容包发布与代码上线是不同操作:前者通过管理 API 写入数据,后者可能迁移数据库并切换服务。不要用一个“构建成功”同时代表两者完成。

准备生产配置与目标主机信息,但验收报告只记录变量名和保管位置,不包含管理员密码、Cookie、连接串或证书私钥。目标环境无法确认时停止写入。

静态与构建检查

在仓库根目录运行:

make verify

该目标检查开发契约、发布操作脚本、内容包、Markdown 安全、Go 测试、Nuxt 类型和生产构建。保存命令、提交和退出结果。它不自动证明真实浏览器交互、目标环境外网访问或所有集成旅程通过。

公开页面应额外检查手机与桌面排版、键盘导航、代码块内部滚动、链接和缺失内容 404。项目/文档详情应能直接打开,而不是必须从首页点击后才正常。

一次性集成验收

以下脚本会创建带唯一后缀的内容夹具。仅在可丢弃的测试数据库及对应 API 上执行;禁止指向正在编辑内容的数据库。它们使用 PHASE1_ADMIN_USERNAMEPHASE1_ADMIN_PASSWORD,账号启用 MFA 时还需 PHASE1_ADMIN_MFA_SECRET。下例假设已另起连接一次性数据库的 API 于 8082,必须先核实而非直接复制端口。

PROJECT_API_BASE=http://127.0.0.1:8082 make verify-project-api
DOCUMENT_API_BASE=http://127.0.0.1:8082 make verify-document-api
SEARCH_UPDATE_API_BASE=http://127.0.0.1:8082 make verify-search-update-api

完整发布还按范围运行其他实体、认证和体验申请旅程。关注草稿不可见、关系依赖保护、发布、归档、文档移动、乐观锁冲突和搜索更新。失败时先保留测试日志与数据,不在生产库重跑寻找原因。

内容和权限验收

检查项目元数据、文档全文、父子目录、相邻导航与站内链接;通过公开只读核验对照内容包。重复执行新增导入不应创建重复内容,显式同步只应修改包内目标。

管理员需验证登录、注销、CSRF 和角色权限;启用 MFA 的账号确认认证器时间及二次校验。公开端不得暴露后台会话、内部错误细节或真实凭据。文档中的运维示例没有自动执行,不能把文章发布状态改写成技术已验证。

目标环境准入

严格预检通过后,确认真实 DNS、CA 证书、可信代理、内部端口隔离和异地备份。发布前备份必须能够定位和恢复,上一版本镜像与发布记录必须保留。

PROD_ENV_FILE=/etc/douya/production.env STRICT_PROD=1 make preflight
PROD_ENV_FILE=/etc/douya/production.env make prod-smoke

以上命令需在已配置的目标主机执行。Smoke 不能替代外部网络验收;从外部检查首页、公开 API、robots、sitemap 与证书链,同时确认公网 /metrics 不可访问。

停止、回退与签收

构建失败、迁移异常、备份缺失、公开接口错误或权限边界失效时停止扩大影响。回退前确认业务停写、当前数据保存、恢复点及数据丢失窗口;默认回退脚本会恢复数据库,不是只切换旧镜像。不要用 make migrate-down 撤销未知故障。

验收记录应区分“本地验证”“一次性集成通过”和“目标环境通过”,列出未完成项及责任人。发布签收由负责人确认,不能仅凭脚本打印 PASS 宣称公网交付。

执行细节见生产运维,排查见常见问题

DOUYA OPS ECOSYSTEM

完善文档,帮助更多运维人

把安装、配置、API 与运维方法沉淀为清晰文档,让工具和项目更容易被正确使用。