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 微服务发布脚本。
最小部署链路:
- 本地或 CI 执行
npm run build生成dist。 - 执行
npm run deploy:serve,一个 Node 进程同时运行dist静态站点和deployAPI。 - 发布机构建并推送
deploy-platform镜像。 - 目标机安装
hyapp-deploy-platform.service和/etc/hyapp/deploy-platform/docker.env。 - 发布机执行
deploy/tencent_tat/deploy_platform_tat_deploy.py deploy发布当前平台。 - 平台服务端调用
deploy/tencent_tat/hyapp_tat_deploy.py查询或发布 HyApp 后端服务。
本地一键运行:
npm run deploy:run
已有 dist 时直接运行:
npm run deploy:serve
默认监听 13200,可通过 DEPLOY_API_PORT 覆盖。
腾讯云凭据读取顺序:
- 优先读取当前进程环境变量
TENCENTCLOUD_SECRET_ID、TENCENTCLOUD_SECRET_KEY、TENCENTCLOUD_REGION。 - 未设置环境变量时,
deploy/server.mjs会读取TENCENT_CREDENTIALS_FILE指向的文件;未指定时默认读取仓库根目录.env。 - 区域未写入凭据时,HyApp 发布脚本使用 inventory 中的
region。
真实接口:
GET /deploy/api/health:只返回凭据是否存在,不返回密钥明文。POST /deploy/api/edgeone/purge-url:提交 EdgeOne URL 刷新任务,必须带confirmed=true;只允许EDGEONE_ALLOWED_HOSTS中的域名,默认h5.global-interaction.com、vivagames.global-interaction.com、asset.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:生产admin-server固定发布入口,必须带confirmed=true;发布只允许origin/main,deploy 机构建并推送10.2.1.3:18082/hyapp/admin-server:<tag>,再通过 Tencent TAT 到 Saudiadmin-platform实例ins-p11begwe更新/etc/hyapp/admin-server/docker.env的IMAGE并重启hyapp-admin-server,最后验证10.2.1.2:13100的healthz/readyz、Caddy 和公网入口。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:测试机自动更新 timerstart/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.mddeploy/tencent_tat/README.md
HyApp 后端仓库不再负责生产部署编排。新增或调整生产部署脚本、inventory、systemd、Docker env、托管资源边界和公共 initdb/rocketmq 配置时,都在本仓库维护。