Files
memind/docs/release-deploy.md
T

85 lines
3.7 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`。
> 每次发包前先读:[发包必看](发包必看.md)。
## 当前规则
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 健康检查;失败立即回滚。
补充:
- `103 / Studio` runtime 发布入口:`bash scripts/release-portal-runtime-prod.sh`
- `105` runtime 发布入口:`bash scripts/release-portal-runtime-105.sh`
- 两者都必须是 **runtime artifact**,不要直接发源码树
- `105``103` 的关键差异是:
`105` 为 Linux 环境,**不要携带本机 Mac 的 `node_modules`**;应在 `105` 切换前本机执行 `npm install --omit=dev --no-package-lock`
## 唯一入口
```bash
bash scripts/release-portal-runtime-prod.sh --dry-run
bash scripts/release-portal-runtime-prod.sh
```
如果目标环境是 `105`
```bash
bash scripts/release-portal-runtime-105.sh --dry-run
bash scripts/release-portal-runtime-105.sh --yes
```
## 产物发布流程
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` / `data/` / `users/` / `.tailscale/` / `public/plaza-covers/` / `logs/``/Users/john/MindSpace` 是独立 MindSpace Service 根目录,不随 Portal runtime 解包;`/Users/john/Project/Memind/MindSpace` 只作为旧链路兼容/存量目录看待。
8. 更新 LaunchAgent 指向 `${APP_DIR}/scripts/run-memind-portal-prod.sh`
9. 启动 Portal,检查 `127.0.0.1:8081/api/status` 为 200。
10. 旧源码 live 目录移入 `archives/`,线上不再保留可运行源码树。
## 105 runtime 发布差异
`105` 当前不是 launchd,而是 `systemd` 服务:
```text
goose-h5.service
WorkingDirectory=/root/tkmind_go/ui/h5
EnvironmentFile=/root/tkmind_go/ui/h5/.env
ExecStart=/opt/node/bin/node /root/tkmind_go/ui/h5/server.mjs
```
所以 `105` 发布时要额外满足:
1. 保留 `.env` / `MindSpace/` / `data/` / `users/` / `logs/` / `public/plaza-covers/`
2. 远端切换前在新的 runtime 目录执行 Linux 依赖安装
3. 最终用 `systemctl restart goose-h5` 拉起服务
4. 健康检查目标是 `http://127.0.0.1:8080/api/status`
## 禁止事项
- 禁止 `rsync_to_server.sh`
- 禁止 `bash scripts/release-prod.sh`(源码包发布已停用)
- 禁止手工拖文件覆盖 103
- 禁止在 103 直接改源码后继续跑
- **禁止 SSH 到 105 直接改业务源码**(含 `scripts/wechat-mp-menu.mjs`);见 [105 服务器变更规范](105-server-operations.md)
- 禁止跳过备份和健康检查
## 相关文档
- [本机与 103 运行拓扑](103-runtime-topology.md)
- [Portal 无源码迁移说明](no-source-portal-migration.md)
- [105 服务器变更规范](105-server-operations.md)
- [开发环境规则](../DEVELOPMENT_RELEASE_RULES.md)
- [测试发布规则](../TEST_RELEASE_RULES.md)
- [生产发布规则](../PRODUCTION_RELEASE_RULES.md)