Files
memind/PRODUCTION_RELEASE_RULES.md
T

3.4 KiB
Raw Blame History

生产发布规则

每次生产发包前先读:docs/发包必看.md。那里记录了 2026-06-27 Portal/goosed 事故后的强制检查项。

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