mirror of
https://github.com/chillpadclub/bedolaga-cabinet.git
synced 2026-07-28 09:33:46 +00:00
56 lines
2.0 KiB
Bash
56 lines
2.0 KiB
Bash
#!/usr/bin/env bash
|
||
# Скачивает сборку из GitHub Release приватного репозитория и раскатывает её
|
||
# поверх продакшен-статики кабинета на VPS, с автоматическим бэкапом.
|
||
#
|
||
# Использование:
|
||
# ./deploy-cabinet.sh — последний релиз
|
||
# ./deploy-cabinet.sh v1.63.0 — конкретный релиз (откат на версию)
|
||
#
|
||
# Требует gh CLI, авторизованный токеном с правом Contents: Read-only на этот
|
||
# репозиторий. Токен лежит отдельно от скрипта — см. TOKEN_FILE ниже.
|
||
#
|
||
# Откат вручную при проблемах:
|
||
# rsync -a --delete "$DEST.bak/" "$DEST/"
|
||
|
||
set -euo pipefail
|
||
|
||
REPO="chillpadclub/bedolaga-cabinet"
|
||
DEST="/home/etkr4k/remnawave-bedolaga-telegram-bot/cabinet-dist"
|
||
ASSET="cabinet-dist.tar.gz"
|
||
TOKEN_FILE="$HOME/.cabinet-deploy-token"
|
||
TAG="${1:-}"
|
||
|
||
if [ ! -f "$TOKEN_FILE" ]; then
|
||
echo "Не найден файл токена: $TOKEN_FILE" >&2
|
||
echo "Создайте его: echo '<токен>' > $TOKEN_FILE && chmod 600 $TOKEN_FILE" >&2
|
||
exit 1
|
||
fi
|
||
|
||
export GH_TOKEN
|
||
GH_TOKEN="$(cat "$TOKEN_FILE")"
|
||
|
||
TMP="$(mktemp -d)"
|
||
trap 'rm -rf "$TMP"' EXIT
|
||
|
||
if [ -z "$TAG" ]; then
|
||
echo "Скачиваю последний релиз из $REPO..."
|
||
gh release download --repo "$REPO" --pattern "$ASSET" --dir "$TMP" --clobber
|
||
else
|
||
echo "Скачиваю релиз $TAG из $REPO..."
|
||
gh release download "$TAG" --repo "$REPO" --pattern "$ASSET" --dir "$TMP" --clobber
|
||
fi
|
||
|
||
echo "Распаковываю..."
|
||
mkdir -p "$TMP/dist"
|
||
tar -xzf "$TMP/$ASSET" -C "$TMP/dist"
|
||
|
||
echo "Бэкап текущей статики в $DEST.bak..."
|
||
rm -rf "$DEST.bak"
|
||
cp -r "$DEST" "$DEST.bak"
|
||
|
||
echo "Разворачиваю новую сборку в $DEST..."
|
||
rsync -a --delete --exclude '50x.html' "$TMP/dist/" "$DEST/"
|
||
|
||
echo "Готово. Откат при проблемах:"
|
||
echo " rsync -a --delete '$DEST.bak/' '$DEST/'"
|