|
|
@@ -19,6 +19,7 @@ REMOTE_DIR="${REMOTE_DIR:-/opt/iot-platform}"
|
|
19
|
19
|
APP_NAME="iot-platform"
|
|
20
|
20
|
LOCAL_JAR=""
|
|
21
|
21
|
DO_BUILD=false
|
|
|
22
|
+NO_ROLLBACK=false
|
|
22
|
23
|
|
|
23
|
24
|
# 颜色
|
|
24
|
25
|
RED='\033[0;31m'
|
|
|
@@ -33,14 +34,19 @@ while [[ $# -gt 0 ]]; do
|
|
33
|
34
|
DO_BUILD=true
|
|
34
|
35
|
shift
|
|
35
|
36
|
;;
|
|
|
37
|
+ --no-rollback)
|
|
|
38
|
+ NO_ROLLBACK=true
|
|
|
39
|
+ shift
|
|
|
40
|
+ ;;
|
|
36
|
41
|
--jar)
|
|
37
|
42
|
LOCAL_JAR="$2"
|
|
38
|
43
|
shift 2
|
|
39
|
44
|
;;
|
|
40
|
45
|
--help|-h)
|
|
41
|
|
- echo "用法: ./deploy.sh [--build] [--jar <path>]"
|
|
42
|
|
- echo " --build 本地执行 mvn clean package"
|
|
43
|
|
- echo " --jar 指定要部署的 jar 文件路径"
|
|
|
46
|
+ echo "用法: ./deploy.sh [--build] [--no-rollback] [--jar <path>]"
|
|
|
47
|
+ echo " --build 本地执行 mvn clean package"
|
|
|
48
|
+ echo " --no-rollback 健康检查失败时不自动回滚,保留新版本用于排查"
|
|
|
49
|
+ echo " --jar 指定要部署的 jar 文件路径"
|
|
44
|
50
|
exit 0
|
|
45
|
51
|
;;
|
|
46
|
52
|
*)
|
|
|
@@ -142,10 +148,17 @@ if ssh "${SERVER_USER}@${SERVER_HOST}" "bash ${REMOTE_DIR}/bin/health-check.sh l
|
|
142
|
148
|
ssh "${SERVER_USER}@${SERVER_HOST}" "systemctl status ${APP_NAME} --no-pager"
|
|
143
|
149
|
exit 0
|
|
144
|
150
|
else
|
|
145
|
|
- echo -e "${RED}[6/6] 健康检查失败! 执行回滚...${NC}"
|
|
|
151
|
+ echo -e "${RED}[6/6] 健康检查失败!${NC}"
|
|
|
152
|
+
|
|
|
153
|
+ if [ "$NO_ROLLBACK" = true ]; then
|
|
|
154
|
+ echo -e "${YELLOW}[no-rollback] 已启用不回滚模式,保留新版本用于排查${NC}"
|
|
|
155
|
+ echo -e "${YELLOW}排查命令:${NC}"
|
|
|
156
|
+ echo " ssh ${SERVER_USER}@${SERVER_HOST} 'journalctl -u ${APP_NAME} -f'"
|
|
|
157
|
+ echo " ssh ${SERVER_USER}@${SERVER_HOST} 'systemctl status ${APP_NAME}'"
|
|
|
158
|
+ exit 1
|
|
|
159
|
+ fi
|
|
146
|
160
|
|
|
147
|
|
- # 回滚
|
|
148
|
|
- echo -e "${YELLOW}[rollback] 停止服务...${NC}"
|
|
|
161
|
+ echo -e "${YELLOW}[rollback] 执行回滚...${NC}"
|
|
149
|
162
|
ssh "${SERVER_USER}@${SERVER_HOST}" "systemctl stop ${APP_NAME} || true"
|
|
150
|
163
|
|
|
151
|
164
|
if ssh "${SERVER_USER}@${SERVER_HOST}" "test -f ${REMOTE_DIR}/backup/${BACKUP_NAME}"; then
|