-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdeploy.sh
More file actions
executable file
·145 lines (114 loc) · 3.49 KB
/
deploy.sh
File metadata and controls
executable file
·145 lines (114 loc) · 3.49 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
#!/bin/bash
# 部署脚本:按顺序执行图片转换、文档同步、构建和部署
# 颜色输出
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
# 服务器配置
SERVER_ALIAS="aliyun"
REMOTE_DIR="/var/www/zeka-stack-docs/dist"
# 获取脚本所在目录
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
DIST_DIR="${SCRIPT_DIR}/.vitepress/dist"
echo -e "${BLUE}========================================${NC}"
echo -e "${GREEN}Zeka Stack 部署工具${NC}"
echo -e "${BLUE}========================================${NC}"
echo ""
# 步骤 1: 图片转换为 WebP
echo -e "${YELLOW}[步骤 1/4] 图片转换为 WebP 格式...${NC}"
echo ""
if [ ! -f "${SCRIPT_DIR}/convert-images-to-webp.sh" ]; then
echo -e "${RED}错误: 找不到 convert-images-to-webp.sh 脚本${NC}"
exit 1
fi
# 添加执行权限
chmod +x "${SCRIPT_DIR}/convert-images-to-webp.sh"
# 执行图片转换脚本
bash "${SCRIPT_DIR}/convert-images-to-webp.sh"
if [ $? -ne 0 ]; then
echo -e "${RED}图片转换失败,终止部署${NC}"
exit 1
fi
echo ""
echo -e "${GREEN}✓${NC} 图片转换完成"
echo ""
# 步骤 2: 同步文档
echo -e "${YELLOW}[步骤 2/4] 同步文档到 docs 目录...${NC}"
echo ""
if [ ! -f "${SCRIPT_DIR}/sync-docs.sh" ]; then
echo -e "${RED}错误: 找不到 sync-docs.sh 脚本${NC}"
exit 1
fi
# 添加执行权限
chmod +x "${SCRIPT_DIR}/sync-docs.sh"
# 执行文档同步脚本
bash "${SCRIPT_DIR}/sync-docs.sh"
if [ $? -ne 0 ]; then
echo -e "${RED}文档同步失败${NC}"
exit 1
fi
echo ""
echo -e "${GREEN}✓${NC} 文档同步完成"
echo ""
# 步骤 3: 构建文档
echo -e "${YELLOW}[步骤 3/4] 构建文档站点...${NC}"
echo ""
cd "${SCRIPT_DIR}"
# 检查 node_modules 是否存在
if [ ! -d "node_modules" ]; then
echo -e "${YELLOW}正在安装依赖...${NC}"
pnpm install
if [ $? -ne 0 ]; then
echo -e "${RED}依赖安装失败${NC}"
exit 1
fi
fi
# 执行构建
pnpm run build
if [ $? -ne 0 ]; then
echo -e "${RED}文档构建失败${NC}"
exit 1
fi
echo ""
echo -e "${GREEN}✓${NC} 文档构建完成"
echo ""
# 步骤 4: 部署到服务器
echo -e "${YELLOW}[步骤 4/4] 部署到服务器 ${SERVER_ALIAS}:${REMOTE_DIR}...${NC}"
echo ""
# 检查构建产物是否存在
if [ ! -d "${DIST_DIR}" ]; then
echo -e "${RED}错误: 构建产物目录不存在: ${DIST_DIR}${NC}"
exit 1
fi
# 在远程服务器创建目录(如果不存在)
ssh ${SERVER_ALIAS} "mkdir -p ${REMOTE_DIR}"
if [ $? -ne 0 ]; then
echo -e "${RED}无法连接到服务器或创建目录失败${NC}"
exit 1
fi
# 使用 rsync 同步文件(增量同步,删除远程多余文件)
rsync -avz --delete --progress "${DIST_DIR}/" "${SERVER_ALIAS}:${REMOTE_DIR}/"
if [ $? -ne 0 ]; then
echo -e "${RED}文件上传失败${NC}"
exit 1
fi
echo ""
echo -e "${GREEN}✓${NC} 部署完成"
echo ""
# 完成
echo -e "${BLUE}========================================${NC}"
echo -e "${GREEN}🎉 全部部署完成!${NC}"
echo -e "${BLUE}========================================${NC}"
echo ""
echo -e "${YELLOW}部署信息:${NC}"
echo -e " - 服务器: ${BLUE}${SERVER_ALIAS}${NC}"
echo -e " - 目录: ${BLUE}${REMOTE_DIR}${NC}"
echo -e " - 站点: ${BLUE}https://zekastack.dong4j.site/docs/${NC}"
echo ""
echo -e "${YELLOW}本地命令:${NC}"
echo -e " - 运行 ${BLUE}pnpm run dev${NC} 启动开发服务器"
echo -e " - 运行 ${BLUE}pnpm run build${NC} 构建文档"
echo -e " - 运行 ${BLUE}pnpm run preview${NC} 预览构建结果"
echo ""