build_release.sh 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. #!/bin/bash
  2. # 遇到错误立即退出
  3. set -e
  4. echo "========================================================"
  5. echo " ShuDao SafeAI 生产环境一键打包脚本 (Linux)"
  6. echo "========================================================"
  7. echo ""
  8. # 设置路径变量
  9. ROOT_DIR=$(pwd)
  10. FRONTEND_DIR="$ROOT_DIR/shudao-vue-frontend"
  11. BACKEND_DIR="$ROOT_DIR/shudao-go-backend"
  12. OUTPUT_DIR="$ROOT_DIR/deploy_output"
  13. # 1. 前端构建
  14. echo "[1/5] 正在构建前端项目 (Vue)..."
  15. cd "$FRONTEND_DIR"
  16. npm run build
  17. if [ $? -ne 0 ]; then
  18. echo "[ERROR] 前端构建失败!请检查错误信息。"
  19. exit 1
  20. fi
  21. echo "[SUCCESS] 前端构建完成。"
  22. echo ""
  23. # 2. 清理后端旧资源
  24. echo "[2/5] 清理后端旧资源..."
  25. cd "$ROOT_DIR"
  26. if [ -d "$BACKEND_DIR/assets" ]; then
  27. rm -rf "$BACKEND_DIR/assets"
  28. fi
  29. if [ -f "$BACKEND_DIR/views/index.html" ]; then
  30. rm -f "$BACKEND_DIR/views/index.html"
  31. fi
  32. echo "[SUCCESS] 清理完成。"
  33. echo ""
  34. # 3. 复制新资源
  35. echo "[3/5] 整合前端资源到后端..."
  36. # 确保目标目录存在
  37. mkdir -p "$BACKEND_DIR/assets"
  38. mkdir -p "$BACKEND_DIR/views"
  39. # 复制 assets 目录内容
  40. # 注意:cp -r source/* dest/ 会将内容复制进去
  41. cp -r "$FRONTEND_DIR/dist/assets/"* "$BACKEND_DIR/assets/"
  42. # 复制 index.html
  43. cp "$FRONTEND_DIR/dist/index.html" "$BACKEND_DIR/views/index.html"
  44. echo "[SUCCESS] 资源整合完成。"
  45. echo ""
  46. # 4. 后端打包 (Linux amd64)
  47. echo "[4/5] 正在打包后端 (Target: Linux/amd64)..."
  48. cd "$BACKEND_DIR"
  49. # 显式指定 GOOS=linux 以确保生成 Linux 二进制文件
  50. bee pack -be GOOS=linux -be GOARCH=amd64
  51. if [ $? -ne 0 ]; then
  52. echo "[ERROR] 后端打包失败!请确保已安装 bee 工具 (go install github.com/beego/bee/v2@latest)。"
  53. exit 1
  54. fi
  55. echo "[SUCCESS] 后端打包完成。"
  56. echo ""
  57. # 5. 解压验证
  58. echo "[5/5] 解压验证 (Output: deploy_output)..."
  59. cd "$ROOT_DIR"
  60. if [ -d "$OUTPUT_DIR" ]; then
  61. rm -rf "$OUTPUT_DIR"
  62. fi
  63. mkdir -p "$OUTPUT_DIR"
  64. # 检查压缩包是否存在
  65. if [ -f "$BACKEND_DIR/shudao-go-backend.tar.gz" ]; then
  66. tar -xzf "$BACKEND_DIR/shudao-go-backend.tar.gz" -C "$OUTPUT_DIR"
  67. echo "[SUCCESS] 已解压到: $OUTPUT_DIR"
  68. else
  69. echo "[WARNING] 未找到压缩包,可能打包名称不匹配,请手动检查 shudao-go-backend 目录。"
  70. fi
  71. echo ""
  72. echo "========================================================"
  73. echo " 打包流程全部完成!"
  74. echo "========================================================"
  75. echo ""
  76. echo "部署包位置: $BACKEND_DIR/shudao-go-backend.tar.gz"
  77. echo "解压预览: $OUTPUT_DIR"
  78. echo ""