Files
martial-master/.drone.yml
T
n72595987@gmail.comandClaude f9df72ebb8
continuous-integration/drone/push Build is failing
改为直接部署:使用 systemd 管理 Java 进程
变更说明:
- 不再使用 Docker 容器部署后端
- 使用 sdkman 管理的 JDK 17 直接运行 JAR
- 使用 systemd 服务管理进程(自动重启、日志管理)

部署流程:
1. Drone CI 编译 BladeX 框架和后端项目
2. SCP 传输 blade-api.jar 到 /app/martial-backend/bin/
3. SSH 执行 systemctl restart martial-backend
4. systemd 自动启动 Java 进程

优势:
- 简化部署,不需要 Docker 镜像层
- 更直接的进程管理和日志查看
- 启动速度更快
- 资源占用更少

systemd 服务配置:
- 服务名:martial-backend.service
- 工作目录:/app/martial-backend
- JAR 位置:/app/martial-backend/bin/blade-api.jar
- 日志目录:/app/martial-backend/logs/
- JVM 参数:-Xms512m -Xmx1024m
- 自动重启:失败后 10 秒重启

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-29 18:17:22 +08:00

104 lines
2.4 KiB
YAML

kind: pipeline
type: docker
name: 武术系统后端自动部署
# 只在 main 分支触发
trigger:
branch:
- main
event:
- push
steps:
# 步骤1:克隆并编译 BladeX 框架
- name: 编译框架依赖
image: maven:3.9-eclipse-temurin-17
commands:
- echo "克隆 BladeX 框架代码..."
- cd /drone/src/..
- git clone https://git.waypeak.work/martial/martial-tool.git || echo "已存在,跳过克隆"
- ls -la
- echo "开始编译 BladeX 框架..."
- cd martial-tool
- mvn clean install -DskipTests -q
- echo "✅ BladeX 框架编译完成"
# 步骤2:编译后端项目
- name: 编译后端项目
image: maven:3.9-eclipse-temurin-17
commands:
- echo "开始编译后端项目..."
- mvn clean package -DskipTests -Dmaven.test.skip=true
- ls -lh target/blade-api.jar
- echo "✅ 后端项目编译完成"
# 步骤3:传输 JAR 文件到服务器
- name: 传输构建产物
image: appleboy/drone-scp
settings:
host: 154.30.6.21
username: root
key:
from_secret: ssh_key
port: 22
target: /app/martial-backend/bin/
source:
- target/blade-api.jar
strip_components: 1
# 步骤4:重启后端服务
- name: 部署到生产环境
image: appleboy/drone-ssh
settings:
host: 154.30.6.21
username: root
key:
from_secret: ssh_key
port: 22
script:
- systemctl restart martial-backend
- sleep 3
- systemctl status martial-backend --no-pager
- echo "✅ 后端部署完成"
# 步骤5:健康检查
- name: 健康检查
image: curlimages/curl:latest
commands:
- sleep 15 # 等待服务启动
- curl -f http://154.30.6.21:8123/actuator/health || exit 1
- echo "✅ 健康检查通过"
# 构建通知(可选)
---
kind: pipeline
type: docker
name: 构建通知
trigger:
branch:
- main
status:
- success
- failure
steps:
- name: 发送通知
image: drillster/drone-email
settings:
host: smtp.qq.com # 邮件服务器
port: 465
from: your-email@qq.com
recipients:
- your-email@qq.com
username:
from_secret: email_username
password:
from_secret: email_password
when:
status:
- failure # 只在失败时发送邮件
depends_on:
- 武术系统后端自动部署