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 "已存在，跳过克隆"
      - echo "开始编译 BladeX 框架..."
      - cd martial-tool
      - mvn clean install -DskipTests -q
      - echo "✅ BladeX 框架编译完成，已安装到 Maven 本地仓库"
      - echo "开始编译后端项目..."
      - cd /drone/src
      - mvn clean package -DskipTests -Dmaven.test.skip=true
      - ls -lh target/blade-api.jar
      - echo "✅ 后端项目编译完成"

  # 步骤2：传输 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

  # 步骤3：重启后端服务
  - 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 "✅ 后端部署完成"

  # 步骤4：健康检查
  - name: 健康检查
    image: curlimages/curl:latest
    commands:
      - sleep 45  # 等待服务完全启动（Spring Boot 应用需要约30-40秒）
      - 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:
  - 武术系统后端自动部署
