146 lines
3.3 KiB
Bash
146 lines
3.3 KiB
Bash
|
|
#!/bin/bash
|
|||
|
|
|
|||
|
|
# Document AI Frontend 部署脚本
|
|||
|
|
# 功能:构建项目并部署到 ecs 服务器
|
|||
|
|
|
|||
|
|
set -e # 遇到错误立即退出
|
|||
|
|
|
|||
|
|
# 颜色定义
|
|||
|
|
RED='\033[0;31m'
|
|||
|
|
GREEN='\033[0;32m'
|
|||
|
|
YELLOW='\033[1;33m'
|
|||
|
|
BLUE='\033[0;34m'
|
|||
|
|
NC='\033[0m' # No Color
|
|||
|
|
|
|||
|
|
# 服务器配置
|
|||
|
|
ECS_HOST="ecs"
|
|||
|
|
DEPLOY_PATH="/texpixel"
|
|||
|
|
|
|||
|
|
# 打印带颜色的消息
|
|||
|
|
print_info() {
|
|||
|
|
echo -e "${BLUE}[INFO]${NC} $1"
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
print_success() {
|
|||
|
|
echo -e "${GREEN}[SUCCESS]${NC} $1"
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
print_warning() {
|
|||
|
|
echo -e "${YELLOW}[WARNING]${NC} $1"
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
print_error() {
|
|||
|
|
echo -e "${RED}[ERROR]${NC} $1"
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
# 检查命令是否存在
|
|||
|
|
check_command() {
|
|||
|
|
if ! command -v $1 &> /dev/null; then
|
|||
|
|
print_error "$1 命令未找到,请先安装"
|
|||
|
|
exit 1
|
|||
|
|
fi
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
# 部署到服务器
|
|||
|
|
deploy_to_server() {
|
|||
|
|
local server=$1
|
|||
|
|
print_info "开始部署到 ${server}..."
|
|||
|
|
|
|||
|
|
# 上传构建产物
|
|||
|
|
print_info "上传 dist 目录到 ${server}..."
|
|||
|
|
if scp -r dist ${server}:~ > /dev/null 2>&1; then
|
|||
|
|
print_success "文件上传成功"
|
|||
|
|
else
|
|||
|
|
print_error "文件上传失败"
|
|||
|
|
return 1
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
# SSH 执行部署操作
|
|||
|
|
print_info "在 ${server} 上执行部署操作..."
|
|||
|
|
ssh ${server} << EOF
|
|||
|
|
set -e
|
|||
|
|
cd ${DEPLOY_PATH}
|
|||
|
|
|
|||
|
|
# 备份旧版本
|
|||
|
|
if [ -d "dist" ]; then
|
|||
|
|
echo "备份旧版本..."
|
|||
|
|
rm -rf dist_bak/
|
|||
|
|
mv dist dist_bak
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
# 移动新版本
|
|||
|
|
if [ -d ~/dist ]; then
|
|||
|
|
mv ~/dist .
|
|||
|
|
echo "部署完成!"
|
|||
|
|
else
|
|||
|
|
echo "错误:找不到 ~/dist 目录"
|
|||
|
|
exit 1
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
# 重新加载 nginx(如果配置了)
|
|||
|
|
if command -v nginx &> /dev/null; then
|
|||
|
|
echo "重新加载 nginx..."
|
|||
|
|
nginx -t && nginx -s reload || echo "警告:nginx 重新加载失败,请手动检查"
|
|||
|
|
fi
|
|||
|
|
EOF
|
|||
|
|
|
|||
|
|
if [ $? -eq 0 ]; then
|
|||
|
|
print_success "${server} 部署成功!"
|
|||
|
|
else
|
|||
|
|
print_error "${server} 部署失败!"
|
|||
|
|
return 1
|
|||
|
|
fi
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
# 主函数
|
|||
|
|
main() {
|
|||
|
|
print_info "=========================================="
|
|||
|
|
print_info "Document AI Frontend 部署脚本"
|
|||
|
|
print_info "=========================================="
|
|||
|
|
echo ""
|
|||
|
|
|
|||
|
|
# 检查必要的命令
|
|||
|
|
print_info "检查环境..."
|
|||
|
|
check_command "npm"
|
|||
|
|
check_command "scp"
|
|||
|
|
check_command "ssh"
|
|||
|
|
|
|||
|
|
# 步骤1: 构建项目
|
|||
|
|
print_info "步骤 1/2: 构建项目..."
|
|||
|
|
if npm run build; then
|
|||
|
|
print_success "构建完成!"
|
|||
|
|
else
|
|||
|
|
print_error "构建失败!"
|
|||
|
|
exit 1
|
|||
|
|
fi
|
|||
|
|
echo ""
|
|||
|
|
|
|||
|
|
# 检查 dist 目录是否存在
|
|||
|
|
if [ ! -d "dist" ]; then
|
|||
|
|
print_error "dist 目录不存在,构建可能失败"
|
|||
|
|
exit 1
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
# 步骤2: 部署到 ecs
|
|||
|
|
print_info "步骤 2/2: 部署到 ecs..."
|
|||
|
|
if deploy_to_server ${ECS_HOST}; then
|
|||
|
|
print_success "ecs 部署完成"
|
|||
|
|
else
|
|||
|
|
print_error "ecs 部署失败"
|
|||
|
|
exit 1
|
|||
|
|
fi
|
|||
|
|
echo ""
|
|||
|
|
|
|||
|
|
# 完成
|
|||
|
|
print_info "清理临时文件..."
|
|||
|
|
# 可以选择是否删除本地的 dist 目录
|
|||
|
|
# rm -rf dist
|
|||
|
|
|
|||
|
|
print_success "=========================================="
|
|||
|
|
print_success "部署完成!"
|
|||
|
|
print_success "=========================================="
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
# 运行主函数
|
|||
|
|
main
|