3.4 KiB
3.4 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或保留可运行源码树。 MindSpace独立服务同样必须走单独 runtime artifact:本地node scripts/build-mindspace-service-runtime.mjs->bash scripts/release-mindspace-service-prod.sh-> 上传103-> 备份/Users/john/MindSpace与共享Memind/.env-> 原子切换到/Users/john/MindSpace-> 健康检查127.0.0.1:8082/health与/mindspace/v1/contract;禁止手工 SSH 改线上/Users/john/MindSpace源码。103 当前拓扑见 docs/103-runtime-topology.md。- 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的直接同步脚本也只保留为禁用提示。- Portal 发布包不得携带运行态资产;
.env、data/、users/、.tailscale/、public/plaza-covers/、logs/只能从线上现有 live 目录继承。/Users/john/MindSpace是独立 MindSpace Service 的生产根目录,不属于 Portal runtime 包;/Users/john/Project/Memind/MindSpace只允许作为旧链路兼容/存量目录处理,不得再被写成 MindSpace Service 的当前根目录。 - 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、跳过发布包的理由。