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:
@@ -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}")"
|
||||
|
||||
Reference in New Issue
Block a user