2026-04-07 11:48:19 +08:00

150 lines
3.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# app-deploy-platform
一个面向你当前场景的发布控制台:
- 不使用 CI 构建
- 由平台所在的构建机自动查找本地 `user / pay / gateway` Git 仓库
- 找到后自动 `git fetch / checkout / pull` 并产出制品
- 平台自动把构建产物上传到 COS 并登记版本
- 平台统一发起部署、回滚、重启
- 平台配置和腾讯云凭证统一放在 `config/prod.yaml`
## 技术栈
- 后端Go + Gin + GORM
- 前端React + Material UI + Vite
- 数据库Postgres
- 缓存Redis
- 后台任务RocketMQ
- 部署Docker Compose
## 当前能力
已实现:
- 构建任务创建
- 本地源码仓库自动发现
- 自动拉取 Gitea 代码、构建、打包、上传 COS
- 主机管理
- 服务实例管理
- 版本自动登记
- 部署任务创建
- 回滚任务创建
- 重启任务创建
- `/health` `/ready` 状态巡检
- RocketMQ 任务队列
- 启动时自动预置你的 chatapp 生产机器清单
- 真实腾讯云发布链路入口
真实执行脚本:
- [tencent_operator.py](/Users/zuozuo/Desktop/HY/chat-app-deploy-platform/ops-scripts/tencent_operator.py)
- [build_operator.py](/Users/zuozuo/Desktop/HY/chat-app-deploy-platform/ops-scripts/build_operator.py)
它已经接入:
- TAT `RunCommand`
- TAT `DescribeInvocationTasks`
- TAT `DescribeAutomationAgentStatus`
- COS 预签名下载 URL
- gateway 发布前后 CLB 权重摘流量 / 恢复
- 远端 `/opt/release/bin/deploy.sh` 的本机失败回滚
- 平台任务遇错中止
## 一键启动
先把 [config/prod.yaml](/Users/zuozuo/Desktop/HY/chat-app-deploy-platform/config/prod.yaml) 里的:
- `tencentcloud.secret_id`
- `tencentcloud.secret_key`
改成真实值,然后执行:
```bash
cd /Users/zuozuo/Desktop/HY/chat-app-deploy-platform
docker compose up -d --build
```
访问:
- 前端:[http://localhost:18090](http://localhost:18090)
- 后端健康检查:[http://localhost:18080/api/healthz](http://localhost:18080/api/healthz)
- Postgres`127.0.0.1:55432`
- Redis`127.0.0.1:56379`
## 数据目录
固定持久化到:
```text
/opt/build_cache/app-deploy-platform/postgres
/opt/build_cache/app-deploy-platform/redis
/opt/build_cache/app-deploy-platform/rocketmq
```
## 配置文件
主配置文件在:
- [config/prod.yaml](/Users/zuozuo/Desktop/HY/chat-app-deploy-platform/config/prod.yaml)
它统一包含:
- 平台端口
- Postgres / Redis / RocketMQ 连接
- 腾讯云 `SecretId / SecretKey`
- 构建工作区和本地仓库扫描目录
- COS bucket
- TAT 配置
- CLB 配置
- `user / pay / gateway` 实例清单
## 推荐落地方式
### 1. 构建机
平台容器需要运行在构建机上,并具备:
- 本地源码目录 `../chat-app`
- 构建缓存目录 `/opt/build_cache/app-deploy-platform/builds`
- 用于拉取 Gitea 仓库的 SSH Key默认挂载 `${HOME}/.ssh -> /root/.ssh`
构建入口在“构建任务”页面。每次点击构建后,平台会:
- 优先在 `/workspace/source/chat-app` 下查找匹配仓库
- 自动 `git fetch / checkout / pull`
- 执行 `go test ./...`
- 执行 Go build 并打成 `user.tgz / pay.tgz / gateway.tgz`
- 生成 `.sha256`
- 上传到 `releases/prod/<release_id>/<service>/...`
- 自动写入版本库
### 2. 平台
平台负责:
- 展示版本
- 展示主机和服务健康状态
- 发起部署、回滚、重启
- 通过 RocketMQ 异步执行任务
- 调用腾讯云 TAT / CLB / COS
### 3. 服务器
服务器侧前提保持不变:
- 已安装 TAT Agent
- 已存在 `/opt/release/bin/deploy.sh`
- `chatapp-user.service`
- `chatapp-pay.service`
- `chatapp-gateway.service`
## 下一步建议
你现在最合理的下一步是:
1. 把 [config/prod.yaml](/Users/zuozuo/Desktop/HY/chat-app-deploy-platform/config/prod.yaml) 的腾讯云凭证改成真实值
2.`docker compose up -d --build` 跑起来
3. 在“构建任务”页面为 `user / pay / gateway` 创建构建任务
4. 构建成功后,在“部署记录”页面发起 `deploy / rollback / restart`