hyapp-deploly/deploy/README.md
2026-07-08 22:33:12 +08:00

4.5 KiB
Raw Blame History

Deploy Platform Deployment

当前项目可以作为独立前端服务部署,不依赖 /Users/hy/Documents/hy/hyapp-server 的部署目录。

目录职责:

  • server.mjs:同源运行 dist 静态文件和 /deploy/api/* 运维查询接口。
  • mysql/initdb/:从 hyapp-server 迁出的共享 MySQL 初始化 SQLhyapp-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 后端服务。

本地一键运行:

npm run deploy:run

已有 dist 时直接运行:

npm run deploy:serve

默认监听 13200,可通过 DEPLOY_API_PORT 覆盖。

腾讯云凭据读取顺序:

  1. 优先读取当前进程环境变量 TENCENTCLOUD_SECRET_IDTENCENTCLOUD_SECRET_KEYTENCENTCLOUD_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.comvivagames.global-interaction.comasset.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/maindeploy 机构建并推送 10.2.1.3:18082/hyapp/admin-server:<tag>,再通过 Tencent TAT 到 Saudi admin-platform 实例 ins-p11begwe 更新 /etc/hyapp/admin-server/docker.envIMAGE 并重启 hyapp-admin-server,最后验证 10.2.1.2:13100healthz/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:测试机自动更新 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 配置时,都在本仓库维护。