From 62b8534769f56fe3ac1563dea3400f3d3b2af61dba74a9cfde1c29c3070848f2 Mon Sep 17 00:00:00 2001 From: AidarKC Date: Tue, 19 May 2026 21:50:05 +0300 Subject: [PATCH] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D1=82=D1=8C=20=D1=83=D1=81=D1=82=D0=BE=D0=B9=D1=87=D0=B8=D0=B2?= =?UTF-8?q?=D0=BE=D1=81=D1=82=D1=8C=20UI-=D0=B4=D0=B5=D0=BF=D0=BB=D0=BE?= =?UTF-8?q?=D1=8F=20=D0=B8=20=D0=BF=D1=80=D0=BE=D0=B2=D0=B5=D1=80=D0=BA?= =?UTF-8?q?=D1=83=20Caddy?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dev_Docs/deploy/README.md | 17 +++++++++++++++++ VERSION.properties | 4 ++-- deploy_shine-PWA.sh | 21 +++++++++++++++++---- 3 files changed, 36 insertions(+), 6 deletions(-) diff --git a/Dev_Docs/deploy/README.md b/Dev_Docs/deploy/README.md index 579cdae..e247ed0 100644 --- a/Dev_Docs/deploy/README.md +++ b/Dev_Docs/deploy/README.md @@ -14,6 +14,23 @@ - Деплой UI: `./gradlew deployUI` - Локальный запуск: `./gradlew startLocal` +## UI-деплой и Caddy (обязательно) + +- Целевая директория UI-деплоя: `/home/player/SHiNE/SHiNE-UI`. +- `Caddyfile` на сервере должен смотреть в ту же директорию через `root * /home/player/SHiNE/SHiNE-UI`. +- В `deploy_shine-PWA.sh` добавлена проверка: если `root` в `Caddyfile` не совпадает, деплой прерывается с ошибкой. +- Для ручного обхода проверки (только осознанно): `ALLOW_CADDY_MISMATCH=1 ./gradlew deployUI`. +- При необходимости можно явно переопределить путь деплоя: + - `REMOTE_UI_DIR=/нужный/путь ./gradlew deployUI` + - `EXPECTED_CADDY_UI_ROOT=/нужный/путь ./gradlew deployUI` + +### Важно для локального UI (history-router / Ctrl+F5) + +- Локальный UI **обязательно** поднимать только через `./gradlew startLocal`. +- Эта задача запускает `scripts/local_spa_server.py`, который делает SPA fallback: любой неизвестный путь (`/m/...`, `/channel/...`) возвращает `index.html`. +- Это обязательно для корректной работы `Ctrl+F5` на внутренних роутов без `404`. +- Рабочий URL выводится задачей в консоль в формате: `http://localhost:/?localWsPort=`. + ## Обязательные правила 1. Перед серверным деплоем проверить локально. diff --git a/VERSION.properties b/VERSION.properties index 42ac682..90dd919 100644 --- a/VERSION.properties +++ b/VERSION.properties @@ -1,2 +1,2 @@ -client.version=1.2.75 -server.version=1.2.69 +client.version=1.2.76 +server.version=1.2.70 diff --git a/deploy_shine-PWA.sh b/deploy_shine-PWA.sh index b04dcb7..e99c9b4 100755 --- a/deploy_shine-PWA.sh +++ b/deploy_shine-PWA.sh @@ -3,7 +3,9 @@ set -euo pipefail SRC_DIR="shine-UI" REMOTE_HOST="${REMOTE_HOST:-player@93.170.12.154}" -REMOTE_BASE_DIR="${REMOTE_BASE_DIR:-/home/player/SHiNE}" +REMOTE_UI_DIR="${REMOTE_UI_DIR:-/home/player/SHiNE/SHiNE-UI}" +EXPECTED_CADDY_UI_ROOT="${EXPECTED_CADDY_UI_ROOT:-/home/player/SHiNE/SHiNE-UI}" +ALLOW_CADDY_MISMATCH="${ALLOW_CADDY_MISMATCH:-0}" BUILD_VERSION="$(date -u +%Y%m%d%H%M%S)" VERSION_FILE="VERSION.properties" export BUILD_VERSION @@ -21,9 +23,8 @@ if [[ -z "$CLIENT_VERSION" ]]; then fi export CLIENT_VERSION -TARGET_DIR="SHiNE-UI" TARGET_URL="https://shineup.me" -REMOTE_DIR="${REMOTE_BASE_DIR}/${TARGET_DIR}" +REMOTE_DIR="${REMOTE_UI_DIR}" cleanup() { rm -rf "$TMP_DIR" @@ -37,7 +38,7 @@ fi echo "==> Preparing staged UI copy with build version: $BUILD_VERSION" echo "==> Client version from $VERSION_FILE: $CLIENT_VERSION" -echo "==> Deploy target: $TARGET_URL ($TARGET_DIR)" +echo "==> Deploy target: $TARGET_URL ($REMOTE_DIR)" rsync -a "$SRC_DIR"/ "$TMP_DIR"/ INDEX_FILE="$TMP_DIR/index.html" @@ -52,6 +53,18 @@ perl -0pi -e 's/window\.__SHINE_CLIENT_VERSION__\s*=\s*'\''[^'\'']*'\'';/window. echo "==> Checking SSH connectivity to $REMOTE_HOST" ssh -o BatchMode=yes -o ConnectTimeout=10 "$REMOTE_HOST" "echo SSH OK" >/dev/null +echo "==> Validating Caddy UI root" +CADDY_ROOT_LINE="$(ssh "$REMOTE_HOST" "sudo grep -n 'root \\* ' /etc/caddy/Caddyfile | head -n 1 || true")" +if [[ -n "$CADDY_ROOT_LINE" && "$CADDY_ROOT_LINE" != *"$EXPECTED_CADDY_UI_ROOT"* ]]; then + echo "ERROR: Caddy root mismatch. Found: $CADDY_ROOT_LINE" >&2 + echo "Expected path fragment: $EXPECTED_CADDY_UI_ROOT" >&2 + if [[ "$ALLOW_CADDY_MISMATCH" != "1" ]]; then + echo "Set ALLOW_CADDY_MISMATCH=1 to bypass this check." >&2 + exit 1 + fi + echo "WARN: proceeding due to ALLOW_CADDY_MISMATCH=1" +fi + echo "==> Preparing remote directory: $REMOTE_DIR" ssh "$REMOTE_HOST" "mkdir -p '$REMOTE_DIR'"