Files
pump-game-ops/tools/proxmox-nginx/publish-release.sh
T
Porfiry f105c1adff 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
2026-09-15 17:07:30 +03:00

51 lines
2.1 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/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"