ADR-011: статика игры вынесена из куба на nginx (LXC 152 game-web), версии каталогами
- корень smart-updown.binom.pw -> nginx на Proxmox (LXC 152, 192.168.76.152) - /api,/ws -> куб (router PathPrefix на внешнем Traefik VDS), куб не менялся - версионирование: /opt/game/releases/<N>/, активная = симлинк /opt/game/current - tools/proxmox-nginx: unpack-release.sh, publish-release.sh, game.nginx.conf, smart-updown.traefik.yaml, README - приёмка живьём: корень 200 nginx/1.24.0 (Ubuntu), /27/ /28/ 200, /api/state 200 JSON, /api/ws цена, autoclose-check 9/9 - питфоллы: OCI-manifest в skopeo dir-дампе, слэш в конце версии, /solana-rpc мимо PathPrefix /api
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
#!/bin/bash
|
||||
# Публикация сборки игры на nginx (LXC 152, game-web).
|
||||
#
|
||||
# publish-release.sh <тег> [--activate]
|
||||
#
|
||||
# Что делает:
|
||||
# 1. тянет образ images.binom.pw/fun/game-front2:<тег> из реестра (skopeo copy в dir);
|
||||
# 2. распаковывает статику в /opt/game/releases/<тег>/;
|
||||
# 3. без --activate оставляет активной текущую сборку (корень не меняется);
|
||||
# с --activate переключает симлинк /opt/game/current на новую версию;
|
||||
# 4. печатает проверку.
|
||||
#
|
||||
# Итог: https://smart-updown.binom.pw/ -> активная сборка
|
||||
# https://smart-updown.binom.pw/<тег>/ -> конкретная сборка
|
||||
set -euo pipefail
|
||||
|
||||
TAG="${1:?использование: publish-release.sh <тег> [--activate]}"
|
||||
ACTIVATE="${2:-}"
|
||||
REG="images.binom.pw/fun/game-front2"
|
||||
CREDS="subochev:Drovosek319"
|
||||
IMG="/tmp/gameimg-${TAG}"
|
||||
|
||||
echo "=== 1/4 тяну образ ${REG}:${TAG} ==="
|
||||
rm -rf "$IMG"
|
||||
skopeo copy --src-creds "$CREDS" "docker://${REG}:${TAG}" "dir:${IMG}"
|
||||
# креды не нужны при распаковке
|
||||
chmod -R a+rX "$IMG"
|
||||
|
||||
echo "=== 2/4 распаковываю статику в /opt/game/releases/${TAG} ==="
|
||||
/opt/game/tools/unpack-release.sh "$TAG" "$IMG"
|
||||
|
||||
if [ "$ACTIVATE" = "--activate" ]; then
|
||||
echo "=== 3/4 переключаю активную сборку на ${TAG} ==="
|
||||
PREV="$(readlink -f /opt/game/current || echo none)"
|
||||
rm -f /opt/game/current
|
||||
ln -s "/opt/game/releases/${TAG}" /opt/game/current
|
||||
echo "было: $PREV"
|
||||
echo "стало: $(readlink -f /opt/game/current)"
|
||||
else
|
||||
echo "=== 3/4 активную сборку НЕ трогаю (нет --activate) ==="
|
||||
echo "активна: $(readlink -f /opt/game/current)"
|
||||
fi
|
||||
|
||||
echo "=== 4/4 проверка ==="
|
||||
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}")"
|
||||
done
|
||||
echo "готово: сборка ${TAG}"
|
||||
rm -rf "$IMG"
|
||||
Reference in New Issue
Block a user