kind: pipeline
type: docker
name: 武术系统前端自动部署

# 只在 main 分支触发
trigger:
  branch:
    - main
  event:
    - push

steps:
  # 步骤1：安装依赖
  - name: 安装依赖
    image: node:18-alpine
    commands:
      - echo "开始安装 npm 依赖..."
      - npm install
      - echo "✅ 依赖安装完成"

  # 步骤2：构建生产版本
  - name: 构建前端项目
    image: node:18-alpine
    commands:
      - echo "开始构建前端项目..."
      - npm run build
      - ls -lh dist/
      - echo "✅ 前端构建完成"

  # 步骤3：传输文件到服务器
  - name: 传输构建产物
    image: appleboy/drone-scp
    settings:
      host: 154.30.6.21
      username: root
      key:
        from_secret: ssh_key
      port: 22
      target: /app/martial/frontend-build
      source:
        - dist/*
        - Dockerfile
        - nginx.conf
      strip_components: 0

  # 步骤4：在服务器上构建镜像并部署
  - name: 部署到生产环境
    image: appleboy/drone-ssh
    settings:
      host: 154.30.6.21
      username: root
      key:
        from_secret: ssh_key
      port: 22
      script:
        - cd /app/martial/frontend-build
        - docker build -f Dockerfile.deploy -t martial/frontend:latest .
        - docker rm -f martial-frontend || true
        - docker run -d --name martial-frontend --restart always -p 5173:80 --network martial_martial-network -e TZ=Asia/Shanghai martial/frontend:latest
        - docker ps | grep martial-frontend
        - echo "✅ 前端部署完成"

  # 步骤5：健康检查
  - name: 健康检查
    image: curlimages/curl:latest
    commands:
      - sleep 5
      - curl -f http://154.30.6.21/ || exit 1
      - echo "✅ 前端访问正常"
