-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathdeploy.sh
118 lines (102 loc) · 2.5 KB
/
deploy.sh
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
#!/bin/bash
pm="cnpm"
server_deploy_dir="/root/bloglite-deployment"
nuxt_deploy_dir="/root/bloglite-deployment/bloglite-nuxt"
admin_dist_dir="/var/www/bloglite-admin"
# 标记变量,用于判断是否需要构建特定项目
build_server=false
build_nuxt=false
build_admin=false
printUsage() {
echo "Usage: deploy.sh -[a, s, n]"
echo " -a: Build Admin side for Nginx"
echo " -s: Build API server using Maven"
echo " -n: Build Nuxt server using npm & Node.js"
}
# 解析命令行参数
while getopts "snah" opt; do
case $opt in
s)
build_server=true
;;
n)
build_nuxt=true
;;
a)
build_admin=true
;;
h)
printUsage
exit 1
;;
\?)
printUsage
exit 1
;;
esac
done
# 如果需要构建任一项目,则先停止相关服务
if $build_server || $build_nuxt || $build_admin; then
systemctl stop bloglite-nuxt
systemctl stop bloglite-server
systemctl stop mysql
else
echo "Did not specify any build target!"
printUsage
fi
# 开始构建API服务器 Maven项目
if $build_server; then
server_src_dir="./BlogLite-Server"
cd "$server_src_dir"
echo "Starting Maven build..."
mvn clean install
if [ $? -eq 0 ]; then
echo "Maven build completed successfully."
jarPkg=$(ls -l ./target | grep .jar | grep -v .jar.original | awk '{print $9}')
cp ./target/$jarPkg ${server_deploy_dir}/${jarPkg}
else
echo "Maven build failed."
exit 1
fi
cd -
fi
# 开始构建Nuxt项目
if $build_nuxt; then
nuxt_src_dir="./BlogLite-Nuxt"
cd "$nuxt_src_dir"
echo "Starting Nuxt build..."
$pm ci
$pm run build
if [ $? -eq 0 ]; then
echo "Nuxt build completed successfully."
cp -r ./.output/** $nuxt_deploy_dir
else
echo "Nuxt build failed."
exit 1
fi
cd -
fi
# 开始构建管理员端项目
if $build_admin; then
admin_src_dir="./BlogLite-Admin"
cd "$admin_src_dir"
echo "Starting Admin build..."
$pm install
$pm run build
if [ $? -eq 0 ]; then
echo "Admin build completed successfully."
cp -r ./dist/** $admin_dist_dir
nginx -s reload
else
echo "Admin build failed."
exit 1
fi
cd -
fi
# 如果执行了任何构建,重新启动服务
if $build_server || $build_nuxt || $build_admin; then
systemctl start mysql
systemctl start bloglite-server
systemctl start bloglite-nuxt
fi
echo "Build script execution completed."