Files
chat/deploy/deploy_server.sh

99 lines
2.8 KiB
Bash
Raw Normal View History

2026-04-25 16:36:34 +08:00
#!/bin/bash
# ============================================
# Tailchat Sales 服务器部署脚本
# ============================================
set -e
# ==================== 1. 核心路径配置 ====================
PROJECT_DIR="/www/wwwroot/tailchat-sales" # 源码目录
FLUTTER_WEB_DIR="/www/wwwroot/tailchat-h5" # Flutter Web 目录
TAILCHAT_WEB_DIR="/www/wwwroot/tailchat-web" # Tailchat Web 目录
BUILD_LOG="/tmp/tailchat_build_$(date +%Y%m%d).log"
# ==================== 2. 工具函数 ====================
log() {
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" | tee -a $BUILD_LOG
}
# ==================== 3. 构建并同步前端 ====================
sync_frontend() {
log "📂 [前端] 开始构建..."
# Flutter Web - 从 Git 拉取的 build/web 复制(服务器无 Flutter 环境)
# 本地需先构建flutter build web --release --dart-define=ENV=prod
# 然后 git add client/flutter/build/web/ && git commit && git push
log "3.1 同步 Flutter Web..."
FLUTTER_BUILD_DIR="$PROJECT_DIR/client/flutter/build/web"
if [ -d "$FLUTTER_BUILD_DIR" ]; then
mkdir -p $FLUTTER_WEB_DIR
rm -rf $FLUTTER_WEB_DIR/*
cp -r $FLUTTER_BUILD_DIR/* $FLUTTER_WEB_DIR/
log "✅ Flutter Web 同步完成"
else
log "⚠️ Flutter Web 构建目录不存在,跳过"
fi
# Tailchat Web 构建
log "3.2 构建 Tailchat Web..."
cd $PROJECT_DIR/client/web
pnpm install >> $BUILD_LOG 2>&1
pnpm run build >> $BUILD_LOG 2>&1
if [ $? -eq 0 ]; then
log "✅ Tailchat Web 构建完成"
else
log "❌ Tailchat Web 构建失败"
exit 1
fi
# 同步 Tailchat Web
WEB_BUILD_DIR="$PROJECT_DIR/client/web/dist"
mkdir -p $TAILCHAT_WEB_DIR
rm -rf $TAILCHAT_WEB_DIR/*
cp -r $WEB_BUILD_DIR/* $TAILCHAT_WEB_DIR/
log "✅ Tailchat Web 同步完成"
}
# ==================== 4. 后端部署 ====================
deploy_backend() {
log "🚀 [后端] 开始部署..."
cd $PROJECT_DIR
log "4.1 同步代码..."
git fetch origin
git reset --hard origin/main
log "4.2 重启 Tailchat 服务..."
cd $PROJECT_DIR
docker-compose down
docker-compose up -d --build
log "4.3 等待服务启动..."
sleep 10
# 检查服务状态
if docker-compose ps | grep -q "Up"; then
log "✅ Tailchat 服务启动成功"
else
log "❌ Tailchat 服务启动失败"
docker-compose logs >> $BUILD_LOG
exit 1
fi
}
# ==================== 5. 执行主流程 ====================
case "$1" in
frontend)
sync_frontend
;;
backend)
deploy_backend
;;
*)
sync_frontend
deploy_backend
;;
esac
log "🏁 [$(date '+%H:%M:%S')] 部署完成!"