Skip to content

Commit 1a5f7df

Browse files
committed
🔧 调整前端部署脚本
1 parent c0d1b6f commit 1a5f7df

3 files changed

Lines changed: 122 additions & 86 deletions

File tree

scripts/web/init.sh

Lines changed: 53 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,23 @@
1-
#!/usr/bin/env bash
1+
#!/bin/bash
22

3-
CURRENT_SCRIPT_PATH=$(cd "$(dirname "${BASH_SOURCE[0]}")";pwd)
4-
TCA_SCRIPT_ROOT=${TCA_SCRIPT_ROOT:-"$(cd $(dirname $CURRENT_SCRIPT_PATH); pwd)"}
5-
export TCA_PROJECT_PATH=${TCA_PROJECT_PATH:-"$( cd $(dirname $TCA_SCRIPT_ROOT); pwd )"}
3+
set -eo pipefail
4+
5+
# 当前脚本执行目录
6+
CURRENT_SCRIPT_PATH=$(
7+
cd "$(dirname "${BASH_SOURCE[0]}")"
8+
pwd
9+
)
10+
11+
TCA_SCRIPT_ROOT=${TCA_SCRIPT_ROOT:-"$(dirname "${CURRENT_SCRIPT_PATH}")"}
12+
13+
export TCA_PROJECT_PATH=${TCA_PROJECT_PATH:-"$(dirname "${TCA_SCRIPT_ROOT}")"}
614
export TCA_WEB_PATH=$TCA_PROJECT_PATH/web
715
export TCA_WEB_DEPLOY_SOURCE_PATH=$TCA_WEB_PATH/tca-deploy-source
816

9-
source $TCA_SCRIPT_ROOT/utils.sh
10-
source $TCA_SCRIPT_ROOT/config.sh
17+
# shellcheck disable=SC1091
18+
source "$TCA_SCRIPT_ROOT"/utils.sh
19+
# shellcheck disable=SC1091
20+
source "$TCA_SCRIPT_ROOT"/config.sh
1121

1222
# 微前端基座
1323
MICRO_FRONTEND_FRAMEWORK="framework"
@@ -16,52 +26,44 @@ MICRO_FRONTEND_DOCUMENT="tca-document"
1626
# 子微前端
1727
MICRO_FRONTEND_APPS="login tca-layout tca-analysis tca-manage"
1828

29+
# 校验是否存在unzip命令
1930
function check_unzip_command() {
20-
if command_exists unzip; then
21-
return 0
22-
else
23-
return 1
24-
fi
25-
}
26-
27-
# 由于原来各个微前端采用了不同的nginx conf,后为简化开源版前端部署已重新调整配置,为兼容旧版此处默认使用清楚逻辑
28-
function clear_old_nginx_conf() {
29-
# 清除各个应用的nginx conf文件
30-
MICRO_FRONTEND="$MICRO_FRONTEND_FRAMEWORK $MICRO_FRONTEND_APPS $MICRO_FRONTEND_DOCUMENT"
31-
for app in $MICRO_FRONTEND; do
32-
rm -f $NGINX_CONF_PATH/$app.conf
33-
done
31+
if command_exists unzip; then
32+
return 0
33+
else
34+
return 1
35+
fi
3436
}
3537

3638
# 清理资源文件
3739
function clear_assets() {
3840
LOG_WARN "将路径下的资源文件和前端nginx配置备份到 ${TCA_WEB_DEPLOY_PATH}_bak 下..."
3941
if [ -d "$TCA_WEB_DEPLOY_PATH" ]; then
40-
cp -r $TCA_WEB_DEPLOY_PATH/ ${TCA_WEB_DEPLOY_PATH}_bak/
42+
cp -r "$TCA_WEB_DEPLOY_PATH"/ "${TCA_WEB_DEPLOY_PATH}"_bak/
4143
fi
42-
44+
4345
if [ -d "$NGINX_CONF_PATH/tca_ingress.conf" ]; then
44-
cp -r $NGINX_CONF_PATH/tca_ingress.conf ${TCA_WEB_DEPLOY_PATH}_bak/
46+
cp -r "$NGINX_CONF_PATH"/tca_ingress.conf "${TCA_WEB_DEPLOY_PATH}"_bak/
4547
fi
4648

4749
LOG_INFO "开始清理路径下的资源文件 $TCA_WEB_DEPLOY_PATH ..."
48-
rm -rf $TCA_WEB_DEPLOY_PATH/
50+
rm -rf "${TCA_WEB_DEPLOY_PATH:?}"/
4951
LOG_INFO "开始清理前端nginx配置 ..."
50-
rm -f $NGINX_CONF_PATH/tca_ingress.conf
52+
rm -f "$NGINX_CONF_PATH"/tca_ingress.conf
5153
}
5254

5355
# 解压编译后文件
5456
function init_unzip_build() {
5557
LOG_INFO "解压编译后文件到 $TCA_WEB_DEPLOY_PATH ..."
56-
rm -rf $TCA_WEB_DEPLOY_PATH/
57-
mkdir -p $TCA_WEB_DEPLOY_PATH
58-
cd $TCA_WEB_DEPLOY_SOURCE_PATH/build_zip/
58+
rm -rf "${TCA_WEB_DEPLOY_PATH:?}"/
59+
mkdir -p "$TCA_WEB_DEPLOY_PATH"
60+
cd "$TCA_WEB_DEPLOY_SOURCE_PATH"/build_zip/
5961
# 遍历并解压
6062
MICRO_FRONTEND="$MICRO_FRONTEND_FRAMEWORK $MICRO_FRONTEND_APPS $MICRO_FRONTEND_DOCUMENT"
6163
for app in $MICRO_FRONTEND; do
62-
unzip -q -o $app.zip -d $TCA_WEB_DEPLOY_PATH/$app
64+
unzip -q -o "$app".zip -d "$TCA_WEB_DEPLOY_PATH"/"$app"
6365
done
64-
cd $TCA_WEB_DEPLOY_SOURCE_PATH
66+
cd "$TCA_WEB_DEPLOY_SOURCE_PATH"
6567
}
6668

6769
# 初始化配置 framework
@@ -85,8 +87,8 @@ function init_framework_web() {
8587
"
8688
LOG_INFO "[INFO]:index.html RUNTIME is enabled"
8789
LOG_INFO "[INFO]: change 404.html, unsupported-browser.html"
88-
sed -i "$replace_content" $FRAMEWORK_DEPLOY_PATH/404.html
89-
sed -i "$replace_content" $FRAMEWORK_DEPLOY_PATH/unsupported-browser.html
90+
sed -i "$replace_content" "$FRAMEWORK_DEPLOY_PATH"/404.html
91+
sed -i "$replace_content" "$FRAMEWORK_DEPLOY_PATH"/unsupported-browser.html
9092

9193
LOG_INFO "[INFO]: change index.html"
9294
sed \
@@ -95,12 +97,12 @@ function init_framework_web() {
9597
s|__MICRO_FRONTEND_API__|$MICRO_FRONTEND_API|g; \
9698
s|__MICRO_FRONTEND_SETTING_API__|$MICRO_FRONTEND_SETTING_API|g; \
9799
" \
98-
$FRAMEWORK_DEPLOY_PATH/index.runtime.html >$FRAMEWORK_DEPLOY_PATH/index.html
100+
"$FRAMEWORK_DEPLOY_PATH"/index.runtime.html >"$FRAMEWORK_DEPLOY_PATH"/index.html
99101

100102
LOG_INFO "conf 配置迁移 ..."
101103
# 将conf目录中的配置文件拷贝到 $MICRO_FRONTEND_FRAMEWORK static目录下
102-
cp $TCA_WEB_DEPLOY_SOURCE_PATH/conf/settings.json $FRAMEWORK_DEPLOY_PATH/static/settings.json
103-
cp $TCA_WEB_DEPLOY_SOURCE_PATH/conf/configs.json $FRAMEWORK_DEPLOY_PATH/static/configs.json
104+
cp "$TCA_WEB_DEPLOY_SOURCE_PATH"/conf/settings.json "$FRAMEWORK_DEPLOY_PATH"/static/settings.json
105+
cp "$TCA_WEB_DEPLOY_SOURCE_PATH"/conf/configs.json "$FRAMEWORK_DEPLOY_PATH"/static/configs.json
104106
LOG_INFO "$MICRO_FRONTEND_FRAMEWORK 配置完毕"
105107
}
106108

@@ -111,7 +113,7 @@ function init_web_nginx() {
111113
if [ "$IS_DOCKER" == "TRUE" ]; then
112114
SET_DEFAULT_SERVER="default_server"
113115
fi
114-
apps=$(echo $MICRO_FRONTEND_APPS | sed 's/[ ]/\\|/g')
116+
apps=$(echo "$MICRO_FRONTEND_APPS" | sed 's/[ ]/\\|/g')
115117
sed \
116118
"
117119
s|SERVER_NAME|$TCA_WEB_HOST|g; \
@@ -124,27 +126,26 @@ function init_web_nginx() {
124126
s|MICRO_FRONTEND_DOCUMENT|$MICRO_FRONTEND_DOCUMENT|g; \
125127
s|MICRO_FRONTEND_APPS|$apps|g; \
126128
" \
127-
$TCA_WEB_DEPLOY_SOURCE_PATH/nginx/ingress.conf >$NGINX_CONF_PATH/tca_ingress.conf
129+
"$TCA_WEB_DEPLOY_SOURCE_PATH"/nginx/ingress.conf >"$NGINX_CONF_PATH"/tca_ingress.conf
128130
}
129131

130132
# 打印环境变量配置
131133
function log_env() {
132-
LOG_INFO "============================前端配置说明============================"
133-
LOG_INFO "| 前端服务端口: TCA_WEB_PORT --- $TCA_WEB_PORT"
134-
LOG_INFO "| 前端服务SERVER_NAME: TCA_WEB_HOST --- $TCA_WEB_HOST"
135-
LOG_INFO "| 前端服务访问的后端地址: SERVER_ENV --- $TCA_SERVER_ADDR"
136-
LOG_INFO "| 前端服务NGINX配置地址: NGINX_CONF_PATH --- $NGINX_CONF_PATH"
137-
LOG_INFO "| 前端服务资源部署地址: WEB_DEPLOY_PATH --- $TCA_WEB_DEPLOY_PATH"
138-
LOG_INFO "| 前端服务日志地址: NGINX_LOG_PATH --- $NGINX_LOG_PATH"
139-
LOG_INFO "========================end 前端配置说明 end========================"
134+
LOG_INFO "============================前端配置说明============================"
135+
LOG_INFO "| 前端服务端口: TCA_WEB_PORT --- $TCA_WEB_PORT"
136+
LOG_INFO "| 前端服务SERVER_NAME: TCA_WEB_HOST --- $TCA_WEB_HOST"
137+
LOG_INFO "| 前端服务访问的后端地址: SERVER_ENV --- $TCA_SERVER_ADDR"
138+
LOG_INFO "| 前端服务NGINX配置地址: NGINX_CONF_PATH --- $NGINX_CONF_PATH"
139+
LOG_INFO "| 前端服务资源部署地址: WEB_DEPLOY_PATH --- $TCA_WEB_DEPLOY_PATH"
140+
LOG_INFO "| 前端服务日志地址: NGINX_LOG_PATH --- $NGINX_LOG_PATH"
141+
LOG_INFO "========================end 前端配置说明 end========================"
140142
}
141143

142144
function init_web_config() {
143-
check_unzip_command || error_exit "unzip command not installed"
144-
clear_old_nginx_conf
145-
clear_assets
146-
init_unzip_build
147-
init_framework_web
148-
init_web_nginx
149-
log_env
145+
check_unzip_command || error_exit "unzip command not installed"
146+
clear_assets
147+
init_unzip_build
148+
init_framework_web
149+
init_web_nginx
150+
log_env
150151
}

web/tca-deploy-source/scripts/_log.sh

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,3 +14,12 @@ function LOG_WARN() {
1414
function LOG_ERROR() {
1515
echo -e "\033[31m >>> $*\033[0;39m"
1616
}
17+
18+
function error_exit() {
19+
LOG_ERROR "$1" 1>&2
20+
exit 1
21+
}
22+
23+
function command_exists() {
24+
command -v "$@" >/dev/null 2>&1
25+
}

web/tca-deploy-source/scripts/init.sh

Lines changed: 60 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -57,10 +57,48 @@ INGRESS_PORT=${INGRESS_PORT:-80}
5757
# 微前端静态资源存放位置
5858
WEB_DEPLOY_PATH=${WEB_DEPLOY_PATH:-"/usr/share/nginx/www"}
5959
# nginx 配置地址,默认/etc/nginx/conf.d
60-
NGINX_CONF_PATH=${NGINX_CONF_PATH:-"/etc/nginx/conf.d"}
60+
export NGINX_CONF_PATH=${NGINX_CONF_PATH:-"/etc/nginx/conf.d"}
6161
# nginx 日志文件地址,默认/var/log/nginx
62-
NGINX_LOG_PATH=${NGINX_LOG_PATH:-"/var/log/nginx"}
62+
export NGINX_LOG_PATH=${NGINX_LOG_PATH:-"/var/log/nginx"}
6363

64+
# 启动nginx
65+
function start_nginx() {
66+
LOG_INFO "启动 nginx ..."
67+
# wc -l 行数计算。当nginx无进程时,启动nginx,否则reload nginx
68+
nginx_is_start=$(ps -C nginx --no-header | wc -l)
69+
if [ "$nginx_is_start" -eq 0 ]; then
70+
nginx -t || error_exit "nginx test failed"
71+
if [ "$IS_DOCKER" == "TRUE" ]; then
72+
nginx -g "daemon off;"
73+
else
74+
nginx
75+
fi
76+
else
77+
nginx -s reload
78+
fi
79+
}
80+
81+
# ============== start 使用scripts/web/init.sh ==============
82+
# # Web配置
83+
# export TCA_WEB_HOST=$INGRESS_SERVER_NAME
84+
# export TCA_WEB_PORT=$INGRESS_PORT
85+
# export TCA_SERVER_ADDR=$SERVER_ENV
86+
# export TCA_WEB_DEPLOY_PATH=$WEB_DEPLOY_PATH
87+
88+
# TCA_SCRIPT_ROOT=$(
89+
# cd "$(dirname "${CURRENT_PATH}")"
90+
# cd ../../
91+
# cd scripts
92+
# pwd
93+
# )
94+
# # shellcheck disable=SC1091
95+
# source "$TCA_SCRIPT_ROOT"/web/init.sh
96+
# LOG_INFO "Init tca web config"
97+
# init_web_config
98+
# start_nginx
99+
# ============== end 使用scripts/web/init.sh ==============
100+
101+
# ============== start 原有逻辑 ==============
64102
# 微前端基座
65103
MICRO_FRONTEND_FRAMEWORK="framework"
66104
# 微前端帮助文档
@@ -71,30 +109,34 @@ MICRO_FRONTEND_APPS="login tca-layout tca-analysis tca-manage"
71109
# 打印环境变量配置
72110
function log_env() {
73111
LOG_INFO "============================前端配置说明============================"
112+
LOG_INFO "| 前端服务SERVER_NAME: TCA_WEB_HOST --- $INGRESS_SERVER_NAME"
113+
LOG_INFO "| 前端服务端口: TCA_WEB_PORT --- $INGRESS_PORT"
74114
LOG_INFO "| 前端服务访问的后端地址: SERVER_ENV --- $SERVER_ENV"
75-
LOG_INFO "| 前端服务端口: INGRESS_PORT --- $INGRESS_PORT"
76-
LOG_INFO "| 前端服务SERVER_NAME: INGRESS_SERVER_NAME --- $INGRESS_SERVER_NAME"
77-
LOG_WARN "| 注意: 前端服务SERVER_NAME默认通过命令 curl ifconfig.me 获取,用户可自行根据需要在config配置中进行调整"
78115
LOG_INFO "| 前端服务NGINX配置地址: NGINX_CONF_PATH --- $NGINX_CONF_PATH"
79116
LOG_INFO "| 前端服务资源部署地址: WEB_DEPLOY_PATH --- $WEB_DEPLOY_PATH"
80117
LOG_INFO "| 前端服务日志地址: NGINX_LOG_PATH --- $NGINX_LOG_PATH"
81118
LOG_INFO "========================end 前端配置说明 end========================"
82119
}
83120

84-
# 由于原来各个微前端采用了不同的nginx conf,后为简化开源版前端部署已重新调整配置,为兼容旧版此处默认使用清楚逻辑
85-
function clear_old_nginx_conf() {
86-
# 清除各个应用的nginx conf文件
87-
MICRO_FRONTEND="$MICRO_FRONTEND_FRAMEWORK $MICRO_FRONTEND_APPS $MICRO_FRONTEND_DOCUMENT"
88-
for app in $MICRO_FRONTEND; do
89-
rm -f "$NGINX_CONF_PATH"/"$app".conf
90-
done
121+
# 校验是否存在unzip命令
122+
function check_unzip_command() {
123+
if command_exists unzip; then
124+
return 0
125+
else
126+
return 1
127+
fi
91128
}
92129

93130
# 清理资源文件
94131
function clear_assets() {
95132
LOG_WARN "将路径下的资源文件和前端nginx配置备份到 ${WEB_DEPLOY_PATH}_bak 下..."
96-
cp -r "$WEB_DEPLOY_PATH"/ "${WEB_DEPLOY_PATH}"_bak/
97-
cp -r "$NGINX_CONF_PATH"/tca_ingress.conf "${WEB_DEPLOY_PATH}"_bak/
133+
if [ -d "$WEB_DEPLOY_PATH" ]; then
134+
cp -r "$WEB_DEPLOY_PATH"/ "${WEB_DEPLOY_PATH}"_bak/
135+
fi
136+
if [ -d "$NGINX_CONF_PATH/tca_ingress.conf" ]; then
137+
cp -r "$NGINX_CONF_PATH"/tca_ingress.conf "${WEB_DEPLOY_PATH}"_bak/
138+
fi
139+
98140
LOG_INFO "开始清理路径下的资源文件 $WEB_DEPLOY_PATH ..."
99141
rm -rf "${WEB_DEPLOY_PATH:?}"/
100142
LOG_INFO "开始清理前端nginx配置 ..."
@@ -178,27 +220,11 @@ function init_web_nginx() {
178220
"$ROOT_PATH"/nginx/ingress.conf >"$NGINX_CONF_PATH"/tca_ingress.conf
179221
}
180222

181-
# 启动nginx
182-
function start() {
183-
LOG_INFO "启动 nginx ..."
184-
# wc -l 行数计算。当nginx无进程时,启动nginx,否则reload nginx
185-
nginx_is_start=$(ps -C nginx --no-header | wc -l)
186-
if [ "$nginx_is_start" -eq 0 ]; then
187-
nginx -t
188-
if [ "$IS_DOCKER" == "TRUE" ]; then
189-
nginx -g "daemon off;"
190-
else
191-
nginx
192-
fi
193-
else
194-
nginx -s reload
195-
fi
196-
}
197-
198-
log_env
199-
clear_old_nginx_conf
223+
check_unzip_command || error_exit "unzip command not installed"
200224
clear_assets
201225
init_unzip_build
202226
init_framework_web
203227
init_web_nginx
204-
start
228+
log_env
229+
start_nginx
230+
# ============== end 原有逻辑 ==============

0 commit comments

Comments
 (0)