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

7.9 KiB
Raw Blame History

AGENTS.md

Working agreements

  1. 做任何事情之前不要猜测,先看代码和现有链路。
  2. 找最直接的方案解决问题。
  3. 所有解决的问题都要验证。
  4. 修改时碰到已有改动无需询问,继续修改,不回滚无关改动。

数据资源

  1. MySQL、Redis、MQ 都是腾讯云托管资源。
  2. 数据资源状态入口:GET /deploy/api/hyapp/resources?remote=1
  3. 读取链路Tencent TAT -> deploy 机器。
  4. 业务服务器配置优先用 deploy 机器 SSH 读取。
  5. 业务服务器 SSH 失败时,对对应 CVM 使用 TAT 兜底读取。
  6. 禁止把 MySQL、Redis、MQ 当服务器 SSH。
  7. 禁止开放生产 SQL、Mongo 查询入口。
  8. TAT 未返回前,页面保持加载状态。

微服务

  1. 微服务列表和详情必须使用 GET /deploy/api/hyapp/discover?remote=1 的真实数据。
  2. 禁止用静态假数据兜底展示微服务运行态。
  3. 配置 YAML 只在列表右侧三点和详情配置区展示。
  4. 读取 YAML 时使用 includeConfig=1,密钥字段保持脱敏。

CDN 刷新

  1. CDN 刷新入口是 /cdn-refresh
  2. EdgeOne URL 刷新 API 是 POST /deploy/api/edgeone/purge-url
  3. 默认 EdgeOne 站点是 global-interaction.comZoneId 是 zone-3qwew52ihaj2
  4. 默认只允许刷新 h5.global-interaction.com,新增域名必须通过 EDGEONE_ALLOWED_HOSTS 配置。
  5. 真实刷新必须带 confirmed=true;验证以 EdgeOne 返回的 jobIdstatustasks 为准。
  6. 禁止把 CDN 刷新页面做成任意域名、任意动作执行入口。

生产特殊服务

  1. admin-server 不在标准 prod inventory 的滚动服务清单里;它部署在 Saudi admin-platform 机器 ins-p11begwe,公网 43.164.70.49,内网 10.2.1.2
  2. admin-server 的 systemd 是 hyapp-admin-server,容器是 hyapp-admin-server,配置是 /etc/hyapp/admin-server/config.yamlDocker env 是 /etc/hyapp/admin-server/docker.envmigration 目录是 /opt/hyapp/admin-server/migrations,监听 10.2.1.2:13100
  3. 更新 admin-server 必须只发布 origin/maindeploy 机从 Gitea 拉取 git@gitea.haiyihy.com:hy/hyapp-server.gitorigin/main,构建并推送 10.2.1.3:18082/hyapp/admin-server:<tag>,再通过 Tencent TAT 到 ins-p11begwe 修改 /etc/hyapp/admin-server/docker.envIMAGE 后重启 hyapp-admin-server
  4. admin-platform 机器已经配置 Docker 直拉内网 Harbor/etc/docker/daemon.json 包含 insecure registry 10.2.1.3:18082/root/.docker/config.json 包含 Harbor 登录凭据;如果 docker pull 10.2.1.3:18082/... 失败,优先检查这两处。
  5. 更新 admin-server 后必须验证:systemctl is-active hyapp-admin-server、容器镜像 tag/digest、ss -lntp | grep 13100curl http://10.2.1.2:13100/healthzcurl http://10.2.1.2:13100/readyz、Caddy 容器 yumi-admin-caddy 运行、公网 https://admin-acc.global-interaction.com/ 返回 200、未登录 https://admin-acc.global-interaction.com/api/v1/auth/me 返回 401
  6. Saudi admin-platform 机器同时承接两个 5 秒轮询的前端 watcherchatapp3-admin-watch.servicehyapp-admin-platform-watch.service。它们只在远端 commit 变化或静态目录缺失时构建,不应每 5 秒重复 build。
  7. chatapp3-admin-watch.service 使用 /opt/chatapp3-admin/bin/watch-build.sh,部署脚本是 /opt/chatapp3-admin/bin/deploy-once.sh,仓库是 git@gitea.haiyihy.com:hy/chatapp3-admin.gitmain,构建后写入 /opt/yumi-admin/frontend-admin/site/yumiadmin-acc,公网入口是 https://yumiadmin-acc.global-interaction.com。前端 API 配置必须是 https://yumiadmin-acc.global-interaction.com/consoleCaddy 的 /console/* 通过 Saudi 内网 CLB https://10.2.1.12 回源,并保持上游 Host/SNI 为 jvapi.haiyihy.com
  8. hyapp-admin-platform-watch.service 使用 /opt/hyapp-admin-platform/bin/watch-build.sh,部署脚本是 /opt/hyapp-admin-platform/bin/deploy-once.sh,仓库是 https://gitea.haiyihy.com/hy/hyapp-admin-platform.gitmain,构建后写入 /opt/yumi-admin/frontend-admin/site/hyapp-admin-platform,公网入口是 https://admin-acc.global-interaction.com。前端 API 配置必须保持同源 /apiCaddy 的 /api/* 回源到 10.2.1.2:13100
  9. 更新或排查这两个 Saudi 前端 watcher 后必须验证:systemctl is-active chatapp3-admin-watch hyapp-admin-platform-watch、对应 .last_built_commit / .deployed_commitjournalctl -u .../opt/*/logs/deploy.log,以及公网首页 200、未登录 API 401
  10. HyApp cron-service 当前部署在 Saudi 主服务机器 new-app-1,实例 ins-fi5zufpk,内网 10.2.1.4
  11. cron-service 的 systemd 是 hyapp-cron-service,容器是 hyapp-cron-service,配置是 /etc/hyapp/cron-service/config.yamlDocker env 是 /etc/hyapp/cron-service/docker.env,监听 13007
  12. cron-service 当前不在标准 prod inventory 的 services 清单里;更新时构建并推送 10.2.1.3:18082/hyapp/cron-service:<tag>,通过 Tencent TAT 到 new-app-1 修改 docker env 的 IMAGE 后重启 hyapp-cron-service
  13. 更新 cron-service 后必须验证镜像 tag、Docker health、systemd active13007 监听。
  14. 腾讯云 ap-singapore 的实例名 cron 机器是 ins-nt6bsay0 / 10.3.1.14;当前没有 HyApp hyapp-cron-service,不要把它当成 HyApp cron-service 发布目标。

测试 server / testbox

  1. 测试 server 指 HyApp 后端测试机 testbox43.165.195.39 / 10.11.0.2,实例 lhins-q0m38zc6,区域 ap-jakarta
  2. 测试机根目录固定为 /opt/hyapp-server-test,代码目录为 /opt/hyapp-server-test/source
  3. 测试机部署不走生产镜像仓库,不摘 CLB当前模式是测试机拉取远端 test 分支。
  4. 自动更新由 hyapp-server-test-deploy.timer 每分钟触发,部署脚本为 /opt/hyapp-server-test/bin/deploy.sh
  5. 只有 Compose 服务全部 healthy 后,才认为部署成功并写入 /opt/hyapp-server-test/.deployed_commit
  6. 测试服务页面必须通过 GET /deploy/api/hyapp/testbox/status 读取真实状态,禁止静态假数据兜底。
  7. 测试服务操作必须走固定 API 和 deploy/tencent_tat/hyapp_testbox_config.py,禁止在页面开放任意 shell。
  8. 服务操作只允许 update/start/stop/restarttimer 操作只允许 start/stop/restart/status
  9. 测试机配置读取默认脱敏;除非服务端显式设置 HYAPP_TESTBOX_CONFIG_ALLOW_RAW=1 且请求带 raw=1,否则不得返回原始密钥。
  10. 保存配置前必须备份旧文件;包含 *** 脱敏占位符的配置禁止保存。
  11. 测试库 migration 只允许列出或执行测试机仓库 source/server/admin/migrations/*.sql,禁止页面手写 SQL。

测试 server 日志 debug

  1. Debug 前先用 GET /deploy/api/hyapp/testbox/statuspython3 deploy/tencent_tat/hyapp_testbox_config.py status --env-file /opt/hy-app-monitor/.env 确认真实状态。
  2. 页面或 API 异常时,先查 deploy-platform 自身:journalctl -u hyapp-deploy-platform -n 200 --no-pagerdocker logs --tail=200 hyapp-deploy-platform
  3. 测试机自动部署异常时,查 hyapp-server-test-deploy.timerhyapp-server-test-deploy.servicejournalctl
  4. 业务服务异常时,在测试机 /opt/hyapp-server-test/source 下查 Docker Compose 项目 hyapp-testpslogsinspect
  5. 如果 /opt/hyapp-server-test/docker-compose.testbox.yml 不存在Compose 命令只能使用 source/docker-compose.yml
  6. Debug 过程可以通过 SSH 或腾讯云 TAT 执行只读命令;不要新增生产 SQL、Mongo 查询入口,不要把 MySQL、Redis、MQ 当服务器 SSH。
  7. 修复后必须验证:刷新测试服务页、调用 status API或直接运行 hyapp_testbox_config.py status,确认 commit、timer、服务 health 与预期一致。