# Deploy Platform Deployment 当前项目可以作为独立前端服务部署,不依赖 `/Users/hy/Documents/hy/hyapp-server` 的部署目录。 目录职责: - `server.mjs`:同源运行 `dist` 静态文件和 `/deploy/api/*` 运维查询接口。 - `mysql/initdb/`:从 hyapp-server 迁出的共享 MySQL 初始化 SQL;hyapp-server 本地 compose 只引用这里,不再保留根部署目录。 - `rocketmq/`:从 hyapp-server 迁出的本地 RocketMQ broker 配置。 - `standalone/`:当前平台和 HyApp 后端服务的目标服务器 systemd + Docker 安装模板。 - `tencent_tat/`:发布机通过腾讯云 TAT 调度远端重启和镜像更新,包含当前平台自身发布脚本和 HyApp 微服务发布脚本。 最小部署链路: 1. 本地或 CI 执行 `npm run build` 生成 `dist`。 2. 执行 `npm run deploy:serve`,一个 Node 进程同时运行 `dist` 静态站点和 `deploy` API。 3. 发布机构建并推送 `deploy-platform` 镜像。 4. 目标机安装 `hyapp-deploy-platform.service` 和 `/etc/hyapp/deploy-platform/docker.env`。 5. 发布机执行 `deploy/tencent_tat/deploy_platform_tat_deploy.py deploy` 发布当前平台。 6. 平台服务端调用 `deploy/tencent_tat/hyapp_tat_deploy.py` 查询或发布 HyApp 后端服务。 本地一键运行: ```bash npm run deploy:run ``` 已有 `dist` 时直接运行: ```bash npm run deploy:serve ``` 默认监听 `13200`,可通过 `DEPLOY_API_PORT` 覆盖。 腾讯云凭据读取顺序: 1. 优先读取当前进程环境变量 `TENCENTCLOUD_SECRET_ID`、`TENCENTCLOUD_SECRET_KEY`、`TENCENTCLOUD_REGION`。 2. 未设置环境变量时,`deploy/server.mjs` 会读取 `TENCENT_CREDENTIALS_FILE` 指向的文件;未指定时默认读取仓库根目录 `.env`。 3. 区域未写入凭据时,HyApp 发布脚本使用 inventory 中的 `region`。 真实接口: - `GET /deploy/api/health`:只返回凭据是否存在,不返回密钥明文。 - `POST /deploy/api/edgeone/purge-url`:提交 EdgeOne URL 刷新任务,必须带 `confirmed=true`;只允许 `EDGEONE_ALLOWED_HOSTS` 中的域名,默认 `h5.global-interaction.com`。 - `GET /deploy/api/hyapp/inventory`:读取 HyApp 生产 inventory。 - `GET /deploy/api/hyapp/plan?services=gateway-service,room-service`:生成发布计划,不执行远端动作。 - `GET /deploy/api/hyapp/discover?services=user-service&remote=1`:通过 Tencent TAT 连接 deploy 机器 `43.164.75.199`,再由 deploy 机器 SSH 到业务机器读取真实实例、systemd、Docker、镜像、资源、端口和 CLB 权重。 - `GET /deploy/api/hyapp/discover?services=user-service&remote=1&includeConfig=1`:读取详情 YAML,密钥字段脱敏。 - `GET /deploy/api/hyapp/resources?remote=1`:数据资源状态。链路:TAT -> deploy;业务服务器配置 SSH 失败后 TAT 兜底。 - `POST /deploy/api/hyapp/deploy`:真实发布,必须带 `confirmed=true`;测试时使用 `dryRun=true`。 - `POST /deploy/api/hyapp/admin-server/deploy`:历史二进制发布入口,目标是旧广州机器 `134.175.160.86 / 172.16.0.6`,不适用于当前生产 `admin-server`。当前生产 `admin-server` 在 `43.164.70.49 / 10.2.1.2`(实例 `ins-p11begwe`)以 Docker 方式运行,应构建并推送 `10.2.1.3:18082/hyapp/admin-server:`,再通过 TAT 更新 `/etc/hyapp/admin-server/docker.env` 的 `IMAGE` 并重启 `hyapp-admin-server`。 - `POST /deploy/api/hyapp/restart`:真实重启,必须带 `confirmed=true`;测试时使用 `dryRun=true`。 - `GET /deploy/api/hyapp/testbox/status`:读取测试机 test 分支、timer 和 Compose/systemd 服务状态。 - `POST /deploy/api/hyapp/testbox/service`:测试机服务 `update/start/stop/restart`,必须带 `confirmed=true`。 - `POST /deploy/api/hyapp/testbox/timer`:测试机自动更新 timer `start/stop/restart`,必须带 `confirmed=true`。 - `POST /deploy/api/hyapp/testbox/config`:写入测试机单服务配置,自动备份旧文件,可选保存后重启。 - `GET /deploy/api/hyapp/testbox/migrations`:只列出测试机仓库 `server/admin/migrations/*.sql`。 - `POST /deploy/api/hyapp/testbox/migrations/apply`:只执行测试机仓库中的 migration 文件,必须带 `confirmed=true`。 详细命令见: - `deploy/standalone/README.md` - `deploy/tencent_tat/README.md` HyApp 后端仓库不再负责生产部署编排。新增或调整生产部署脚本、inventory、systemd、Docker env、托管资源边界和公共 initdb/rocketmq 配置时,都在本仓库维护。