diff --git a/scripts/deploy-cabinet.sh b/scripts/deploy-cabinet.sh index 8f1d6e0..28ba25b 100644 --- a/scripts/deploy-cabinet.sh +++ b/scripts/deploy-cabinet.sh @@ -1,10 +1,15 @@ #!/usr/bin/env bash -# Скачивает последнюю сборку из GitHub Release форка и раскатывает её +# Скачивает сборку из GitHub Release приватного репозитория и раскатывает её # поверх продакшен-статики кабинета на VPS, с автоматическим бэкапом. # -# Использование: ./deploy-cabinet.sh +# Использование: +# ./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 @@ -12,12 +17,28 @@ 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 -echo "Скачиваю последнюю сборку из $REPO..." -curl -fsSL "https://github.com/$REPO/releases/latest/download/$ASSET" -o "$TMP/$ASSET" +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"