Przeglądaj źródła

feat: add --no-rollback flag to deploy script

When --no-rollback is set, the script keeps the new version on the
server even if health check fails, making it possible to inspect
startup logs via journalctl to diagnose the issue.
master
humanleft 3 dni temu
rodzic
commit
58c2cae5cb
1 zmienionych plików z 19 dodań i 6 usunięć
  1. 19
    6
      deploy/deploy.sh

+ 19
- 6
deploy/deploy.sh Wyświetl plik

19
 APP_NAME="iot-platform"
19
 APP_NAME="iot-platform"
20
 LOCAL_JAR=""
20
 LOCAL_JAR=""
21
 DO_BUILD=false
21
 DO_BUILD=false
22
+NO_ROLLBACK=false
22
 
23
 
23
 # 颜色
24
 # 颜色
24
 RED='\033[0;31m'
25
 RED='\033[0;31m'
33
             DO_BUILD=true
34
             DO_BUILD=true
34
             shift
35
             shift
35
             ;;
36
             ;;
37
+        --no-rollback)
38
+            NO_ROLLBACK=true
39
+            shift
40
+            ;;
36
         --jar)
41
         --jar)
37
             LOCAL_JAR="$2"
42
             LOCAL_JAR="$2"
38
             shift 2
43
             shift 2
39
             ;;
44
             ;;
40
         --help|-h)
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
             exit 0
50
             exit 0
45
             ;;
51
             ;;
46
         *)
52
         *)
142
     ssh "${SERVER_USER}@${SERVER_HOST}" "systemctl status ${APP_NAME} --no-pager"
148
     ssh "${SERVER_USER}@${SERVER_HOST}" "systemctl status ${APP_NAME} --no-pager"
143
     exit 0
149
     exit 0
144
 else
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
     ssh "${SERVER_USER}@${SERVER_HOST}" "systemctl stop ${APP_NAME} || true"
162
     ssh "${SERVER_USER}@${SERVER_HOST}" "systemctl stop ${APP_NAME} || true"
150
 
163
 
151
     if ssh "${SERVER_USER}@${SERVER_HOST}" "test -f ${REMOTE_DIR}/backup/${BACKUP_NAME}"; then
164
     if ssh "${SERVER_USER}@${SERVER_HOST}" "test -f ${REMOTE_DIR}/backup/${BACKUP_NAME}"; then

Ładowanie…
Anuluj
Zapisz