|
|
@@ -0,0 +1,89 @@
|
|
|
+#!/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 ""
|