Files
chat/deploy/deploy_server.sh
2026-04-25 16:36:34 +08:00

99 lines
2.8 KiB
Bash
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/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')] 部署完成!"