2.7 KiB
2.7 KiB
生产发布规则
每次生产发包前先读:docs/发包必看.md。那里记录了 2026-06-27 Portal/goosed 事故后的强制检查项。
103是正式生产主机,105是云侧入口/历史链路;本机一律不允许直接rsync到103或105,也不允许在线改源码后继续运行。- 禁止 SSH 登录
105直接修改业务代码(含服务号菜单脚本scripts/wechat-mp-menu.mjs)。105 上文件是部署产物;变更必须:本地test-memind修改 → Git commit → 正式发布 → 必要时在目标环境执行 API 同步。详见 docs/105-server-operations.md。 - Portal 生产必须是无源码 runtime 模式:构建只发生在本机 Mac,产物是
.runtime/portal/;103只接收 runtime artifact、继承持久目录、启动服务,禁止在103上npm install、npm run build或保留可运行源码树。 - Portal 生产发布唯一合法路径是:本地已提交代码 -> 本机
node scripts/build-portal-runtime.mjs->bash scripts/release-portal-runtime-prod.sh-> 上传103-> 全量备份 + 持久目录备份 -> 原子切换 live 目录 -> 重启 Portal -> 健康检查。 scripts/release-prod.sh(源码包发布)已停用,不得再用于 Portal;rsync_to_server.sh与任何面向105的直接同步脚本也只保留为禁用提示。- 发布包不得携带运行态资产;
.env、MindSpace/、data/、users/、.tailscale/、public/plaza-covers/、logs/只能从线上现有 live 目录继承。 - runtime artifact 必须包含
server.mjs与mindspace-sandbox-mcp.mjs(sandbox-fs扩展依赖的独立子进程入口)。 - 生产发布必须从已验证的完整
main打整包:分支代码必须先合并进main,禁止从功能分支、单个 commit、单个修复或局部差异单包发布。 - 每次生产发布前必须确认 CI 已通过,且没有未合并的关键变更。
- 每次生产发布前必须先通过
bash scripts/check-release-ready.sh,确认分支不落后origin/main、工作区干净、发布来源可追溯。 - 每次生产发布前必须先做全量备份;发布失败必须自动回滚到切换前的 live 目录。
- 发布清单必须记录:本地 commit、分支、发布时间、发布编号、是否含额外手工环境变更。
- Portal 生产验证至少包含
http://127.0.0.1:8081/api/status的 200 健康检查,并补充本次功能对应的业务路径验收;Plaza 仍按各自发布流程单独验收。 - 生产热修复也不能绕过这套流程;“为了快”不是跳过备份、跳过 commit、跳过发布包的理由。