From dfeaa48e283c681b69c8c4deb33942c794912fd3 Mon Sep 17 00:00:00 2001 From: "n72595987@gmail.com" Date: Sat, 29 Nov 2025 22:21:54 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=87=E6=A1=A3=EF=BC=9A=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=20Drone=20CI/CD=20=E8=87=AA=E5=8A=A8=E5=8C=96=E9=83=A8?= =?UTF-8?q?=E7=BD=B2=E8=AF=B4=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 新增内容: - 部署架构图和流程说明 - 详细的部署步骤(4个阶段,耗时约5-6分钟) - 日常开发使用方法 - .drone.yml 配置文件示例 - systemd 服务管理命令 - 环境要求说明 - 常见问题排查和手动回滚方法 - 部署历史查看入口 开发者现在可以通过 README.md 快速了解: 1. 如何触发自动部署(git push origin main) 2. 部署过程中发生了什么 3. 如何查看部署状态和日志 4. 遇到问题如何排查 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- README.md | 179 +++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 178 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 34ad2f0..06b67bd 100644 --- a/README.md +++ b/README.md @@ -40,4 +40,181 @@ ## 举报有奖 * 向官方提供有用线索并成功捣毁盗版个人或窝点,将会看成果给予 500~10000 不等的现金奖励 -* 官方唯一指定QQ:1272154962 \ No newline at end of file +* 官方唯一指定QQ:1272154962 + +--- + +## 🚀 自动化部署 + +### Drone CI/CD 自动部署配置 + +本项目已配置 Drone CI/CD 实现代码推送后的全自动编译、部署流程。 + +#### 📋 部署架构 + +``` +开发者 Push 代码 + ↓ +Gitea 仓库(git.waypeak.work) + ↓ [Webhook 触发] +Drone CI Server(154.30.6.21:8080) + ↓ [Runner 执行] +编译 BladeX 框架 → 编译后端项目 → SCP 传输 JAR → systemctl 重启服务 → 健康检查 + ↓ +生产服务器部署完成(154.30.6.21:8123) +``` + +#### ⚙️ 部署配置 + +**服务器信息:** +- Drone Server: http://154.30.6.21:8080 +- 生产环境: 154.30.6.21:8123 +- 部署方式: systemd 服务管理 + +**部署步骤(全自动):** +1. **编译完整项目**(约4-5分钟) + - 克隆 BladeX 框架代码(martial-tool) + - 编译框架并安装到 Maven 本地仓库 + - 编译后端项目(martial-master) + - 生成 blade-api.jar(约236MB) + +2. **传输构建产物**(约10-20秒) + - 使用 SCP 传输 JAR 文件到生产服务器 + - 目标路径: `/app/martial-backend/bin/blade-api.jar` + +3. **部署到生产环境**(约3秒) + - 执行 `systemctl restart martial-backend` + - systemd 自动管理进程生命周期 + - 自动重启、日志管理、故障恢复 + +4. **健康检查**(约45秒) + - 等待 Spring Boot 应用完全启动 + - 检查健康端点: `/actuator/health` + - 验证部署成功 + +**总耗时:** 约 5-6 分钟 + +#### 🔧 使用方法 + +**日常开发流程:** + +```bash +# 1. 修改代码 +vim src/main/java/... + +# 2. 提交代码 +git add . +git commit -m "你的提交信息" + +# 3. 推送到 main 分支(自动触发部署) +git push origin main + +# 4. 查看部署进度 +# 访问 Drone UI: http://154.30.6.21:8080 +# 或等待约 5-6 分钟后直接访问生产环境 +``` + +**部署完成后:** +- 访问后端 API: http://154.30.6.21:8123 +- 查看 API 文档: http://154.30.6.21:8123/doc.html +- 健康检查: http://154.30.6.21:8123/actuator/health + +#### 📂 配置文件 + +`.drone.yml` - Drone CI/CD 配置文件 + +```yaml +steps: + - name: 编译完整项目 + image: maven:3.9-eclipse-temurin-17 + commands: + - git clone https://git.waypeak.work/martial/martial-tool.git + - cd martial-tool && mvn clean install -DskipTests -q + - cd /drone/src && mvn clean package -DskipTests + + - name: 传输构建产物 + image: appleboy/drone-scp + settings: + host: 154.30.6.21 + target: /app/martial-backend/bin/ + + - name: 部署到生产环境 + image: appleboy/drone-ssh + settings: + script: + - systemctl restart martial-backend + + - name: 健康检查 + image: curlimages/curl:latest + commands: + - sleep 45 + - curl -f http://154.30.6.21:8123/actuator/health +``` + +#### 🔐 Systemd 服务配置 + +服务名称: `martial-backend.service` + +```bash +# 查看服务状态 +systemctl status martial-backend + +# 查看日志 +journalctl -u martial-backend -f + +# 手动重启 +systemctl restart martial-backend + +# 日志文件位置 +/app/martial-backend/logs/application.log +/app/martial-backend/logs/error.log +``` + +#### 🛠️ 环境要求 + +**生产服务器:** +- JDK 17 (通过 sdkman 管理) +- MySQL 8.0 (端口: 33066) +- Redis 7 (端口: 63379) +- systemd 服务管理 + +**CI/CD 服务器:** +- Drone Server + Drone Runner (Docker 部署) +- Maven 3.9 + Eclipse Temurin JDK 17 (CI 容器镜像) + +#### ⚠️ 注意事项 + +1. **仅 main 分支触发自动部署** + - 其他分支不会触发部署流程 + - 开发分支请使用 feature/* 或 dev 分支 + +2. **部署失败排查** + ```bash + # 查看 Drone 构建日志 + 访问: http://154.30.6.21:8080 + + # 查看应用日志 + ssh root@154.30.6.21 + tail -f /app/martial-backend/logs/application.log + + # 检查服务状态 + systemctl status martial-backend + ``` + +3. **手动回滚** + ```bash + # 如需回滚到之前的版本 + # 1. 找到之前成功的 JAR 文件备份 + # 2. 替换当前 JAR + # 3. 重启服务 + systemctl restart martial-backend + ``` + +#### 📊 部署历史 + +可通过 Drone UI 查看所有部署历史记录: +- 访问: http://154.30.6.21:8080 +- 查看每次构建的详细日志 +- 查看每个步骤的执行时间和状态 + +--- \ No newline at end of file