chore: gate memind_adm gray release candidates

This commit is contained in:
john
2026-07-21 17:01:59 +08:00
parent e08eb50775
commit 7f20c4ce87
7 changed files with 273 additions and 21 deletions
+27 -2
View File
@@ -83,10 +83,35 @@ nginx 示例见 `scripts/gadm-nginx.conf.example``/ops/` → preview`/auth
## 唯一入口
```bash
bash scripts/release-prod.sh --dry-run
# 只生成持久候选包;不连接、不修改 103
TEST_MEMIND_ROOT=<clean-Memind-worktree> \
IMAGE_MAKE_RELEASE_ID=20260720-standalone-rc1 \
bash scripts/release-prod.sh --package-only
# 候选包生成后,只读检查 103 灰度前置条件
bash scripts/check-gray-ready.sh --candidate-dir release-candidates/<release-id>
# 正式生产发布;必须在灰度通过并得到明确许可后执行
bash scripts/release-prod.sh
```
`--dry-run` 是 `--package-only` 的兼容别名。候选包默认保存在
`release-candidates/<release-id>/`,包含 tar 包、manifest 和 SHA-256 校验文件。
发包时 `Memind` 共享源码必须满足:
1. 是 Git 工作区且完全干净。
2. `HEAD` 精确匹配 `MEMIND_BASE_REF`(默认 `origin/main`)。
3. 包含 `asset-gateway.mjs`、`image-make-admin-config.mjs`、`image-make-client.mjs`。
4. manifest 明确记录 `IMAGE_MAKE_RELEASE_ID`,避免后台候选与错误的 image_make 版本配套。
灰度分两层:
1. `check-gray-ready.sh` 默认只做后台候选包、103 当前健康状态、灰度端口和 image_make 版本的只读预检。
2. `--require-image-integration` 额外要求 Portal runtime-config 路由、image_make 配置 URL 和 worker 均已就绪。该条件涉及生产运行态,未经单独许可不得开启。
`release-prod.sh` 没有“灰度即生产”的隐式行为:不带 `--package-only` 时就是正式 live 原子切换,必须等灰度验收通过后再执行。
## 产物发布流程
1. 本地生成 `memind-adm-<release-id>.tar.gz` 和发布清单。
@@ -94,7 +119,7 @@ bash scripts/release-prod.sh
3. 103 备份当前 `/Users/john/Project/memind_adm` 为时间戳压缩包。
4. 在 `/Users/john/Project/releases/` 下解包新版本。
5. 从当前 live 目录继承运行态配置与日志文件。
6. 在 release 目录安装依赖、构建。
6. 在 release 目录安装锁定依赖;前端 `dist/` 已在本地构建完成,103 不执行前端构建。
7. 原子切换 `memind_adm` live 目录。
8. 调用 `scripts/remote_restart.sh` 重启 `8085` 和 `5174`。
9. 检查 `127.0.0.1:8085/health` 与 `127.0.0.1:5174/`。