name: Build and Deploy on: push: branches: - main workflow_dispatch: # 支持手动触发 jobs: deploy: runs-on: ubuntu-latest steps: - name: Deploy to Server uses: appleboy/ssh-action@v1 with: host: ${{ secrets.SERVER_HOST }} port: ${{ secrets.SERVER_PORT || 22 }} username: ${{ secrets.SERVER_USER }} key: ${{ secrets.SSH_KEY }} script: | set -e echo "==========================================" echo "开始部署: $(date '+%Y-%m-%d %H:%M:%S')" echo "==========================================" # 项目路径配置 PROJECT_DIR=/www/wwwroot/sionrui BACKEND_DIR=/www/wwwroot/yudao-server FRONTEND_DIR=/www/wwwroot/muyetools.cn # 1. 拉取最新代码 echo "[1/4] 拉取最新代码..." cd $PROJECT_DIR git fetch origin git reset --hard origin/main git pull origin main # 2. 构建后端 echo "[2/4] 构建后端..." cd $PROJECT_DIR mvn clean package -DskipTests -q # 备份并部署后端 if [ -f "$BACKEND_DIR/yudao-server.jar" ]; then cp $BACKEND_DIR/yudao-server.jar $BACKEND_DIR/backup/yudao-server-$(date +%Y%m%d%H%M).jar fi cp $PROJECT_DIR/yudao-server/target/yudao-server.jar $BACKEND_DIR/ # 3. 构建前端 echo "[3/4] 构建前端..." cd $PROJECT_DIR/frontend pnpm install --frozen-lockfile pnpm build # 部署前端 rm -rf $FRONTEND_DIR/* cp -r $PROJECT_DIR/frontend/app/web-gold/dist/* $FRONTEND_DIR/ # 4. 重启后端服务 echo "[4/4] 重启后端服务..." cd $BACKEND_DIR bash deploy.sh echo "==========================================" echo "部署完成: $(date '+%Y-%m-%d %H:%M:%S')" echo "=========================================="