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 "✅ 前端访问正常"