持续集成:加固交付分支部署与健康检查

This commit is contained in:
wangzhibiao committed 2026-09-14 13:32:26 +08:00
1 parent 033ffe5742
commit 08d9a00a0e
2 files changed
+54 -5

No files matched your search

+2 -2
View File
@@ -22,7 +22,7 @@ build_backend:
- export PATH=/data2/wzb/tools/maven/bin:$JAVA_HOME/bin:$PATH - export PATH=/data2/wzb/tools/maven/bin:$JAVA_HOME/bin:$PATH
- javac -version - javac -version
- cd RuoYi-Vue - cd RuoYi-Vue
- mvn clean package -DskipTests - mvn clean package
- echo "=== 后端编译成功 ===" - echo "=== 后端编译成功 ==="
artifacts: artifacts:
expire_in: 2 days expire_in: 2 days
@@ -57,7 +57,7 @@ deploy_production:
tags: tags:
- railway-deploy - railway-deploy
rules: rules:
- if: '$CI_COMMIT_BRANCH' - if: '$CI_COMMIT_BRANCH == "feat/cicd-pipeline"'
script: script:
- echo "=== 开始部署应用 ===" - echo "=== 开始部署应用 ==="
# 部署前端静态资源到发布目录 # 部署前端静态资源到发布目录
+52 -3
View File
@@ -19,6 +19,20 @@ DB_URL="jdbc:kingbase8://192.168.139.218:4321/training?currentSchema=public,sys_
mkdir -p "$BACKEND_DIR" "$FRONTEND_DIR" "$LOG_DIR" mkdir -p "$BACKEND_DIR" "$FRONTEND_DIR" "$LOG_DIR"
echo "=== 0. 检查运行时安全配置 ==="
if [ -z "${TRAIN_STUDENT_IDENTITY_ENCRYPTION_KEY:-}" ]; then
echo "错误:缺少 TRAIN_STUDENT_IDENTITY_ENCRYPTION_KEY"
exit 1
fi
if [ -z "${TRAIN_STUDENT_IDENTITY_HASH_KEY:-}" ]; then
echo "错误:缺少 TRAIN_STUDENT_IDENTITY_HASH_KEY"
exit 1
fi
echo "运行时安全配置存在性检查通过"
echo "=== 1. 检查并停止当前用户的旧后端进程 ===" echo "=== 1. 检查并停止当前用户的旧后端进程 ==="
TARGET_PID="" TARGET_PID=""
if [ -f "$PID_FILE" ]; then if [ -f "$PID_FILE" ]; then
@@ -61,15 +75,42 @@ echo "后端已在后台启动,PID: $NEW_PID"
echo "实时日志: $LOG_PATH" echo "实时日志: $LOG_PATH"
echo "等待服务启动与健康自检..." echo "等待服务启动与健康自检..."
HEALTH_OK=0
for i in {1..35}; do for i in {1..35}; do
RES=$(curl -s "http://127.0.0.1:${SERVER_PORT}/captchaImage" 2>/dev/null) RES=$(curl -s "http://127.0.0.1:${SERVER_PORT}/captchaImage" 2>/dev/null)
if echo "$RES" | grep -q '"code":200'; then if echo "$RES" | grep -q '"code":200'; then
HEALTH_OK=1
echo "后端健康检查通过!验证码接口返回正常!服务已在端口 $SERVER_PORT 成功运行!" echo "后端健康检查通过!验证码接口返回正常!服务已在端口 $SERVER_PORT 成功运行!"
break break
fi fi
if ! kill -0 "$NEW_PID" 2>/dev/null; then
echo "错误:后端进程在启动阶段提前退出,请检查 $LOG_PATH"
rm -f "$PID_FILE"
exit 1
fi
sleep 2 sleep 2
done done
if [ "$HEALTH_OK" -ne 1 ]; then
echo "错误:后端健康检查超时,请检查 $LOG_PATH"
if kill -0 "$NEW_PID" 2>/dev/null; then
kill -15 "$NEW_PID" 2>/dev/null || true
sleep 2
if kill -0 "$NEW_PID" 2>/dev/null; then
kill -9 "$NEW_PID" 2>/dev/null || true
fi
fi
rm -f "$PID_FILE"
exit 1
fi
echo "=== 3. 检查并启动/重载前端 Web 服务 (Nginx 8082) ===" echo "=== 3. 检查并启动/重载前端 Web 服务 (Nginx 8082) ==="
NGINX_DIR="$DEPLOY_ROOT/nginx" NGINX_DIR="$DEPLOY_ROOT/nginx"
NGINX_CONF="$NGINX_DIR/nginx.conf" NGINX_CONF="$NGINX_DIR/nginx.conf"
@@ -121,12 +162,20 @@ http {
NGINX_EOF NGINX_EOF
fi fi
if pgrep -u $(whoami) -f "nginx: master" >/dev/null; then if pgrep -u "$(whoami)" -f "nginx: master" >/dev/null; then
echo "平滑重载前端 Nginx 服务..." echo "平滑重载前端 Nginx 服务..."
/usr/sbin/nginx -c "$NGINX_CONF" -s reload
if ! /usr/sbin/nginx -c "$NGINX_CONF" -s reload; then
echo "错误:Nginx 平滑重载失败"
exit 1
fi
else else
echo "启动前端 Nginx 服务..." echo "启动前端 Nginx 服务..."
/usr/sbin/nginx -c "$NGINX_CONF"
if ! /usr/sbin/nginx -c "$NGINX_CONF"; then
echo "错误:Nginx 启动失败"
exit 1
fi
fi fi
echo "=== 部署全部就绪!前端访问地址: http://192.168.139.230:8082 ===" echo "=== 部署全部就绪!前端访问地址: http://192.168.139.230:8082 ==="