All checks were successful
continuous-integration/drone/push Build is passing
将 doc/ 目录重组为更标准的结构: 目录变更: - doc/ → docs/ (文档目录,只包含 .md 文件) - doc/sql/ → database/ (数据库脚本目录) - database/bladex/ (BladeX 框架数据库) - database/flowable/ (Flowable 工作流数据库) - database/martial-db/ (武术系统业务数据库) - database/upgrade/ (数据库升级脚本) - doc/script/ → scripts/ (部署和运维脚本) - scripts/docker/ (Docker 部署脚本) - scripts/fatjar/ (Fat JAR 启动脚本) 优势: - 符合标准项目结构规范 - 文档、数据库、脚本分离更清晰 - 便于维护和查找 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
279 lines
7.2 KiB
Markdown
279 lines
7.2 KiB
Markdown
# 武术管理系统 CI/CD 自动化部署 - 完成总结
|
||
|
||
## 🎉 部署状态
|
||
|
||
### ✅ 已完成的工作
|
||
|
||
#### 1. Drone CI/CD 服务器部署(154.30.6.21)
|
||
- **Drone Server**: http://154.30.6.21:8080 ✅ 运行中
|
||
- **Drone Runner**: ✅ 已连接并轮询任务
|
||
- **管理员账号**: JohnSion ✅ 已创建
|
||
- **RPC Secret**: 55db397727eb7def59f3f588c0b503e0 ✅ 已配置
|
||
|
||
#### 2. 部署服务器基础设施
|
||
- **MySQL 8.0**: ✅ 运行中(端口 3306)
|
||
- 数据库: martial_db
|
||
- 表数量: 53 张
|
||
- 测试数据: 2场比赛、10名运动员、9个项目
|
||
- 密码: WtcSecure901faf1ac4d32e2bPwd
|
||
|
||
- **Redis 7-alpine**: ✅ 运行中(端口 6379)
|
||
- 密码: RedisSecure2024MartialXyZ789ABC
|
||
- 持久化: AOF 模式
|
||
|
||
- **Docker Compose**: ✅ 配置完成
|
||
- 位置: /app/martial/docker-compose.yml
|
||
- 网络: martial-network
|
||
|
||
#### 3. CI/CD 配置文件
|
||
- **后端仓库** (martial-master):
|
||
- `.drone.yml` ✅ 已创建并提交
|
||
- `Dockerfile` ✅ 已创建并提交
|
||
- SSH Secret ✅ 你已配置
|
||
|
||
- **前端仓库** (martial-web):
|
||
- `.drone.yml` ✅ 已创建并提交
|
||
- `Dockerfile` ✅ 已创建并提交
|
||
- `nginx.conf` ✅ 已创建并提交
|
||
- SSH Secret ✅ 你已配置
|
||
|
||
---
|
||
|
||
## 📋 待完成的步骤
|
||
|
||
### 步骤1:推送代码到 Gitea ⚠️ 需要你操作
|
||
|
||
**方法A:添加 SSH 公钥到 Gitea(推荐)**
|
||
|
||
1. 复制以下公钥:
|
||
```
|
||
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCzXo91kuSXHfsuqvgm1hdquE+JuaEn2qJB35+BxxFRKFXhwGoMLAAP6kEnawvRPpugfZ7C0bG/6zgQ4E32UwtihaDAEgweyLWKPDW4GEcDofQdgrprBPAoODZc4soAIH3kQ/LePNMsWnwDtc7BANCCmtEk0hnXvMbbFVD6U5MOwfvofzkbCE7OPxOLz+dTNMs8nxOuo9T00rK5julPeCJapJWUbEXXG4X+G2yY7Otx7X1qv7BHE31deRHIUonWT8Wh4EUiyOxUCmXC04l35yOF1rt2dBVa2AHwbpNiKjWVupSoiq+32PTQKoqc85hDRSEueXXjy/GPSCG/MFaLl4LwGMj0Ok/oirlB5RlhjvQpKrvpmYfUg+rS5rhsmKd5dmvzOtyadFoNamZF1g9nNFSmrXh1yhejIkAbUBTJvtuH66fSkH3WDIEp2/TnGr/XVsbAh717meNHMl92Yv/CAQT3JhSMoMA+D1xZWVrRCpMyU05WAepTv+AQOrxm0rvb7MOHVTgBdzmQHVLFFKImYtKDQjhtZnx6cuk/+Y7MmUT/rmdxvjaPpJe/JYmm+dOLnuMU0vtBksTlP7J+xymT5n69P7sh0AtFxRTh4SZaoZu4zDeh98GsbTFSoVgXe4nc7vyBmrKL9pu0OCo5wrrdqa6wzVoyZzUAeC888dFa1XBQQw== katana-import@test.johnsion.club
|
||
```
|
||
|
||
2. 登录 https://git.waypeak.work
|
||
3. 进入 设置 → SSH / GPG 密钥
|
||
4. 添加上面的公钥
|
||
|
||
**方法B:在本地推送代码**
|
||
|
||
在你本地机器上:
|
||
```bash
|
||
# 后端
|
||
cd martial-master
|
||
git pull
|
||
git push origin main
|
||
|
||
# 前端
|
||
cd martial-web
|
||
git pull
|
||
git push origin main
|
||
```
|
||
|
||
### 步骤2:在 Drone UI 中激活仓库 ⚠️ 需要你操作
|
||
|
||
1. 访问 http://154.30.6.21:8080
|
||
2. 使用 Gitea 账号登录(JohnSion)
|
||
3. 授权 Drone 访问你的仓库
|
||
4. 在仓库列表中点击 **ACTIVATE**:
|
||
- `martial/martial-master`
|
||
- `martial/martial-web`
|
||
|
||
### 步骤3:触发首次构建(推送代码后自动触发)
|
||
|
||
代码推送后,Drone 会自动:
|
||
1. 拉取代码
|
||
2. 编译项目
|
||
3. 构建 Docker 镜像
|
||
4. 部署到生产服务器
|
||
5. 执行健康检查
|
||
|
||
**或者手动触发:**
|
||
1. 进入 Drone UI 中的仓库页面
|
||
2. 点击右上角 "NEW BUILD"
|
||
3. 选择 `main` 分支
|
||
4. 点击 "CREATE"
|
||
|
||
---
|
||
|
||
## 🚀 自动化部署流程
|
||
|
||
### 后端部署流程
|
||
```
|
||
推送代码到 main 分支
|
||
↓
|
||
Drone CI 检测到代码变更
|
||
↓
|
||
1. 编译 BladeX 框架(缓存 Maven 依赖)
|
||
↓
|
||
2. 编译后端项目并打包 JAR
|
||
↓
|
||
3. 构建 Docker 镜像
|
||
↓
|
||
4. SSH 到部署服务器(154.30.6.21)
|
||
↓
|
||
5. 拉取最新镜像并重启容器
|
||
↓
|
||
6. 健康检查 (http://154.30.6.21:8123/actuator/health)
|
||
↓
|
||
✅ 部署成功
|
||
```
|
||
|
||
### 前端部署流程
|
||
```
|
||
推送代码到 main 分支
|
||
↓
|
||
Drone CI 检测到代码变更
|
||
↓
|
||
1. 安装 npm 依赖(使用国内镜像加速)
|
||
↓
|
||
2. 构建生产版本(npm run build)
|
||
↓
|
||
3. 构建 Docker 镜像(Nginx + 静态文件)
|
||
↓
|
||
4. SSH 到部署服务器
|
||
↓
|
||
5. 拉取最新镜像并重启容器
|
||
↓
|
||
6. 健康检查 (http://154.30.6.21/)
|
||
↓
|
||
✅ 部署成功
|
||
```
|
||
|
||
---
|
||
|
||
## 🌐 访问地址
|
||
|
||
### 部署后的应用
|
||
- **前端**: http://154.30.6.21
|
||
- **后端 API**: http://154.30.6.21:8123
|
||
- **API 文档**: http://154.30.6.21:8123/doc.html
|
||
|
||
### CI/CD 管理
|
||
- **Drone UI**: http://154.30.6.21:8080
|
||
|
||
---
|
||
|
||
## 🛠️ 常用运维命令
|
||
|
||
### Drone 相关
|
||
```bash
|
||
# 查看 Drone Server 日志
|
||
ssh root@154.30.6.21 "docker logs -f drone"
|
||
|
||
# 查看 Runner 日志
|
||
ssh root@154.30.6.21 "docker logs -f drone-runner"
|
||
|
||
# 重启 Drone 服务
|
||
ssh root@154.30.6.21 "docker restart drone drone-runner"
|
||
```
|
||
|
||
### 应用相关
|
||
```bash
|
||
# 查看所有容器状态
|
||
ssh root@154.30.6.21 "docker ps"
|
||
|
||
# 查看应用日志
|
||
ssh root@154.30.6.21 "docker logs -f martial-backend"
|
||
ssh root@154.30.6.21 "docker logs -f martial-frontend"
|
||
|
||
# 重启应用
|
||
ssh root@154.30.6.21 "cd /app/martial && docker compose restart backend"
|
||
ssh root@154.30.6.21 "cd /app/martial && docker compose restart frontend"
|
||
|
||
# 查看数据库
|
||
ssh root@154.30.6.21 "docker exec -it martial-mysql mysql -uroot -pWtcSecure901faf1ac4d32e2bPwd martial_db"
|
||
```
|
||
|
||
### Docker Compose 管理
|
||
```bash
|
||
# 查看服务状态
|
||
ssh root@154.30.6.21 "cd /app/martial && docker compose ps"
|
||
|
||
# 查看日志
|
||
ssh root@154.30.6.21 "cd /app/martial && docker compose logs -f backend"
|
||
|
||
# 停止所有服务
|
||
ssh root@154.30.6.21 "cd /app/martial && docker compose down"
|
||
|
||
# 启动所有服务
|
||
ssh root@154.30.6.21 "cd /app/martial && docker compose up -d"
|
||
```
|
||
|
||
---
|
||
|
||
## 📝 配置详情
|
||
|
||
### 数据库连接
|
||
- Host: 154.30.6.21 (容器内使用 martial-mysql)
|
||
- Port: 3306
|
||
- Database: martial_db
|
||
- Username: root
|
||
- Password: WtcSecure901faf1ac4d32e2bPwd
|
||
|
||
### Redis 配置
|
||
- Host: 154.30.6.21 (容器内使用 martial-redis)
|
||
- Port: 6379
|
||
- Password: RedisSecure2024MartialXyZ789ABC
|
||
- Database: 8
|
||
|
||
### 环境变量
|
||
后端容器环境变量在 docker-compose.yml 中配置:
|
||
```yaml
|
||
SPRING_PROFILE: dev
|
||
JAVA_OPTS: "-Xms512m -Xmx1024m"
|
||
```
|
||
|
||
---
|
||
|
||
## 🔧 故障排查
|
||
|
||
### 构建失败
|
||
1. 检查 Drone UI 中的构建日志
|
||
2. 确认 SSH Secret 配置正确
|
||
3. 确认部署服务器可以被 SSH 访问
|
||
|
||
### 部署失败
|
||
1. SSH 到部署服务器检查容器状态:`docker ps -a`
|
||
2. 查看容器日志:`docker logs martial-backend`
|
||
3. 检查数据库连接:`docker exec martial-mysql mysql -uroot -p...`
|
||
|
||
### 应用无法访问
|
||
1. 检查容器是否运行:`docker ps | grep martial`
|
||
2. 检查端口是否监听:`ss -tlnp | grep 8123`
|
||
3. 查看应用日志:`docker logs martial-backend`
|
||
|
||
---
|
||
|
||
## 📚 文档位置
|
||
|
||
- **后端文档**: /remote_dev/martial/martial-master/CLAUDE.md
|
||
- **CI/CD 配置**: /remote_dev/martial/martial-master/.drone.yml
|
||
- **部署配置**: /app/martial/docker-compose.yml (部署服务器上)
|
||
- **数据库脚本**: /remote_dev/martial/martial-master/doc/sql/martial-db/
|
||
|
||
---
|
||
|
||
## 🎯 下一步建议
|
||
|
||
1. ✅ **完成代码推送**(见上方步骤1)
|
||
2. ✅ **激活 Drone 仓库**(见上方步骤2)
|
||
3. ⭐ **配置域名**(可选)
|
||
- 前端: martial.waypeak.work → 154.30.6.21:80
|
||
- 后端: api.martial.waypeak.work → 154.30.6.21:8123
|
||
- CI/CD: drone.waypeak.work → 154.30.6.21:8080
|
||
|
||
4. ⭐ **配置 HTTPS**(可选)
|
||
- 使用 Let's Encrypt 免费证书
|
||
- 在 Nginx 中配置 SSL
|
||
|
||
5. ⭐ **配置构建通知**(可选)
|
||
- 邮件通知
|
||
- 钉钉/企业微信通知
|
||
- Telegram 通知
|
||
|
||
---
|
||
|
||
生成时间:2025-11-29
|
||
部署服务器:154.30.6.21
|
||
管理员:JohnSion
|