#!/bin/bash # 遇到错误立即退出 set -e echo "========================================================" echo " ShuDao SafeAI 生产环境一键打包脚本 (Linux)" echo "========================================================" echo "" # 设置路径变量 ROOT_DIR=$(pwd) FRONTEND_DIR="$ROOT_DIR/shudao-vue-frontend" BACKEND_DIR="$ROOT_DIR/shudao-go-backend" OUTPUT_DIR="$ROOT_DIR/deploy_output" # 1. 前端构建 echo "[1/5] 正在构建前端项目 (Vue)..." cd "$FRONTEND_DIR" npm run build if [ $? -ne 0 ]; then echo "[ERROR] 前端构建失败!请检查错误信息。" exit 1 fi echo "[SUCCESS] 前端构建完成。" echo "" # 2. 清理后端旧资源 echo "[2/5] 清理后端旧资源..." cd "$ROOT_DIR" if [ -d "$BACKEND_DIR/assets" ]; then rm -rf "$BACKEND_DIR/assets" fi if [ -f "$BACKEND_DIR/views/index.html" ]; then rm -f "$BACKEND_DIR/views/index.html" fi echo "[SUCCESS] 清理完成。" echo "" # 3. 复制新资源 echo "[3/5] 整合前端资源到后端..." # 确保目标目录存在 mkdir -p "$BACKEND_DIR/assets" mkdir -p "$BACKEND_DIR/views" # 复制 assets 目录内容 # 注意:cp -r source/* dest/ 会将内容复制进去 cp -r "$FRONTEND_DIR/dist/assets/"* "$BACKEND_DIR/assets/" # 复制 index.html cp "$FRONTEND_DIR/dist/index.html" "$BACKEND_DIR/views/index.html" echo "[SUCCESS] 资源整合完成。" echo "" # 4. 后端打包 (Linux amd64) echo "[4/5] 正在打包后端 (Target: Linux/amd64)..." cd "$BACKEND_DIR" # 显式指定 GOOS=linux 以确保生成 Linux 二进制文件 bee pack -be GOOS=linux -be GOARCH=amd64 if [ $? -ne 0 ]; then echo "[ERROR] 后端打包失败!请确保已安装 bee 工具 (go install github.com/beego/bee/v2@latest)。" exit 1 fi echo "[SUCCESS] 后端打包完成。" echo "" # 5. 解压验证 echo "[5/5] 解压验证 (Output: deploy_output)..." cd "$ROOT_DIR" if [ -d "$OUTPUT_DIR" ]; then rm -rf "$OUTPUT_DIR" fi mkdir -p "$OUTPUT_DIR" # 检查压缩包是否存在 if [ -f "$BACKEND_DIR/shudao-go-backend.tar.gz" ]; then tar -xzf "$BACKEND_DIR/shudao-go-backend.tar.gz" -C "$OUTPUT_DIR" echo "[SUCCESS] 已解压到: $OUTPUT_DIR" else echo "[WARNING] 未找到压缩包,可能打包名称不匹配,请手动检查 shudao-go-backend 目录。" fi echo "" echo "========================================================" echo " 打包流程全部完成!" echo "========================================================" echo "" echo "部署包位置: $BACKEND_DIR/shudao-go-backend.tar.gz" echo "解压预览: $OUTPUT_DIR" echo ""