Files
memind/docs/release-deploy.md
T

66 lines
3.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Memind Portal 生产更新发布指南
> 2026-06-26 起,103 / Studio 正式禁止 `rsync` 发布。
> Portal 生产必须是**无源码 runtime 模式**,唯一合法入口是 `bash scripts/release-portal-runtime-prod.sh`。
## 当前规则
1. 构建只发生在本机 Mac`node scripts/build-portal-runtime.mjs`
2. 103 只接收 `.runtime/portal/` 打出来的 artifact,不直接覆盖源码树。
3. 103 在切换前必须做 `Memind` 全量备份,并单独备份持久目录。
4. 103 **禁止** `npm install``npm run build`、在线改源码后继续运行。
5. 切换后必须通过 Portal 健康检查;失败立即回滚。
## 唯一入口
```bash
bash scripts/release-portal-runtime-prod.sh --dry-run
bash scripts/release-portal-runtime-prod.sh
```
## 产物发布流程
1. 本地 commit 当前改动。
2. 本机构建 runtime`node scripts/build-portal-runtime.mjs`(发布脚本默认会自动执行)。
3. 校验 artifact 至少包含:`server.mjs``mindspace-sandbox-mcp.mjs``dist/``scripts/run-memind-portal-prod.sh`
4. 本地生成 `memind-portal-runtime-<release-id>.tar.gz` 和发布清单。
5. 通过 `scp` 上传到 103 的 `incoming/memind-portal-runtime/`
6. 103 备份当前 `/Users/john/Project/Memind` 全目录 + 持久目录。
7. 停止旧 Portal,解包 runtime artifact 到新的 live 目录,继承 `.env` / `MindSpace/` / `data/` / `users/` / `.tailscale/` / `public/plaza-covers/` / `logs/`
8. 更新 LaunchAgent 指向 `${APP_DIR}/scripts/run-memind-portal-prod.sh`
9. 启动 Portal,检查 `127.0.0.1:8081/api/status` 为 200。
10. 旧源码 live 目录移入 `archives/`,线上不再保留可运行源码树。
## 发版前收口
正式打 103 Portal 包之前,先确认本地工作区只保留“本次要上线的 Portal 改动”。下面这些内容默认**不应**并入 Portal 发版:
- `docker/` 下的 goosed 本地/生产镜像、compose、README、`.env.example`
- `scripts/start-goosed-local.sh`
- `scripts/verify-goosed-docker.sh`
- `docs/goosed-*.md`
- `docs/local-dev.md``README.md` 中只服务于本地 Goose / Docker 联调的说明
- `*.bak` 之类临时备份文件
- `.runtime/portal/` 整个构建产物目录
只有当本次需求明确就是这些文件所对应的模块时,才允许把它们一起带入发版 commit。默认场景下,103 Portal 发版应聚焦于业务代码、运行脚本、数据库变更,以及与本次线上目标直接相关的文档。
`bash scripts/release-portal-runtime-prod.sh` 现在会在本地预检查阶段直接拦截这些默认应排除的脏改动;只有在你明确知道自己在做什么时,才允许用 `ALLOW_PORTAL_RELEASE_SCOPE_BYPASS=1` 临时绕过。
## 禁止事项
- 禁止 `rsync_to_server.sh`
- 禁止 `bash scripts/release-prod.sh`(源码包发布已停用)
- 禁止手工拖文件覆盖 103
- 禁止在 103 直接改源码后继续跑
- **禁止 SSH 到 105 直接改业务源码**(含 `scripts/wechat-mp-menu.mjs`);见 [105 服务器变更规范](105-server-operations.md)
- 禁止跳过备份和健康检查
## 相关文档
- [Portal 无源码迁移说明](no-source-portal-migration.md)
- [105 服务器变更规范](105-server-operations.md)
- [开发环境规则](../DEVELOPMENT_RELEASE_RULES.md)
- [测试发布规则](../TEST_RELEASE_RULES.md)
- [生产发布规则](../PRODUCTION_RELEASE_RULES.md)