fix(nginx-152): корень редиректит на активную сборку — закрыта кэш-мина (ассеты Unity зовутся относительным путём)

- index.html: buildUrl="Build" -> без редиректа ассеты шли как /Build/WebGL.wasm (без номера сборки)
  под immutable 7д -> браузер неделю отдавал старую сборку
- publish-release.sh --activate пишет /etc/nginx/game-active.inc: return 302 /<N>/
- immutable сужен до путей с номером сборки; остальное no-store
- приёмка: / -> 302 /29/, браузер тянет /29/Build/* (все 200), autoclose-check 9/9, testfront цел
- сборка 29 (fix webgl: дым падения и PC URP) опубликована на nginx
This commit is contained in:
Porfiry
2026-09-15 18:34:12 +03:00
parent 85f092ba14
commit 5087c67201
5 changed files with 137 additions and 40 deletions
+22 -2
View File
@@ -7,10 +7,11 @@
# 1. тянет образ images.binom.pw/fun/game-front2:<тег> из реестра (skopeo copy в dir);
# 2. распаковывает статику в /opt/game/releases/<тег>/;
# 3. без --activate оставляет активной текущую сборку (корень не меняется);
# с --activate переключает симлинк /opt/game/current на новую версию;
# с --activate переключает симлинк /opt/game/current на новую версию
# И пишет /etc/nginx/game-active.inc (редирект корня на /<тег>/);
# 4. печатает проверку.
#
# Итог: https://smart-updown.binom.pw/ -> активная сборка
# Итог: https://smart-updown.binom.pw/ -> 302 на активную сборку
# https://smart-updown.binom.pw/<тег>/ -> конкретная сборка
set -euo pipefail
@@ -19,6 +20,11 @@ ACTIVATE="${2:-}"
REG="images.binom.pw/fun/game-front2"
CREDS="subochev:Drovosek319"
IMG="/tmp/gameimg-${TAG}"
ACTIVE_INC="/etc/nginx/game-active.inc"
case "$TAG" in
''|*[!0-9]*) echo "тег должен быть числом (номер сборки), получено: $TAG" >&2; exit 1 ;;
esac
echo "=== 1/4 тяну образ ${REG}:${TAG} ==="
rm -rf "$IMG"
@@ -34,14 +40,28 @@ if [ "$ACTIVATE" = "--activate" ]; then
PREV="$(readlink -f /opt/game/current || echo none)"
rm -f /opt/game/current
ln -s "/opt/game/releases/${TAG}" /opt/game/current
# корень редиректим на /<тег>/: тогда ассеты получают версионированный URL
# и immutable-кэш перестаёт «прилипать» между релизами (мина из ADR-010).
cat > "$ACTIVE_INC" <<EOF
# АВТОГЕНЕРАЦИЯ — пишет publish-release.sh при --activate. Не править руками.
location = / {
return 302 /${TAG}/;
}
location = /index.html {
return 302 /${TAG}/;
}
EOF
echo "было: $PREV"
echo "стало: $(readlink -f /opt/game/current)"
echo "корень -> /${TAG}/ (${ACTIVE_INC})"
else
echo "=== 3/4 активную сборку НЕ трогаю (нет --activate) ==="
echo "активна: $(readlink -f /opt/game/current)"
fi
echo "=== 4/4 проверка ==="
nginx -t
systemctl reload nginx
for u in "/" "/${TAG}/" "/${TAG}/index.html" "/${TAG}/Build/WebGL.framework.js"; do
printf ' %-42s %s\n' "$u" "$(curl -s -o /dev/null -w '%{http_code}' "http://127.0.0.1${u}")"