# 武术管理系统 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