# 武术管理系统 CI/CD 自动化部署 - 完成总结

## 🎉 部署状态

### ✅ 已完成的工作

#### 1. Drone CI/CD 服务器部署
- **Drone Server**: https://martial-ci.johnsion.club ✅ 运行中
- **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   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. 访问 https://martial-ci.johnsion.club
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. 健康检查 (https://martial-api.johnsion.club/actuator/health)
    ↓
✅ 部署成功
```

### 前端部署流程
```
推送代码到 main 分支
    ↓
Drone CI 检测到代码变更
    ↓
1. 安装 npm 依赖（使用国内镜像加速）
    ↓
2. 构建生产版本（npm run build）
    ↓
3. 构建 Docker 镜像（Nginx + 静态文件）
    ↓
4. SSH 到部署服务器
    ↓
5. 拉取最新镜像并重启容器
    ↓
6. 健康检查 (https://martial.johnsion.club)
    ↓
✅ 部署成功
```

---

## 🌐 访问地址

### 部署后的应用
- **前端**: https://martial.johnsion.club
- **后端 API**: https://martial-api.johnsion.club
- **API 文档**: https://martial-doc.johnsion.club

### CI/CD 管理
- **Drone UI**: https://martial-ci.johnsion.club

---

## 🛠️ 常用运维命令

### 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. ✅ **配置域名**（已完成）
   - 前端: https://martial.johnsion.club
   - 后端: https://martial-api.johnsion.club
   - API 文档: https://martial-doc.johnsion.club
   - CI/CD: https://martial-ci.johnsion.club

4. ⭐ **配置构建通知**（可选）
   - 邮件通知
   - 钉钉/企业微信通知
   - Telegram 通知

---

生成时间：2025-11-29
部署服务器：154.30.6.21
域名：*.johnsion.club
管理员：JohnSion
