Files
LGBot/update.sh

77 lines
2.3 KiB
Bash
Executable File

#!/bin/bash
# Скрипт для обновления бота из git-репозитория
# Запускается на сервере в директории /opt/LGBot
echo "🔄 Обновление LGBot..."
echo "================================"
# Проверяем, находимся ли мы в git-репозитории
if [ ! -d ".git" ]; then
echo "❌ Ошибка: это не git-репозиторий"
exit 1
fi
# Показываем текущую ветку
CURRENT_BRANCH=$(git branch --show-current)
echo "📍 Текущая ветка: $CURRENT_BRANCH"
# Проверяем наличие изменений
echo ""
echo "📊 Статус репозитория:"
git status --short
# Получаем изменения из удаленного репозитория
echo ""
echo "📥 Получение изменений из репозитория..."
git fetch origin
# Проверяем, есть ли обновления
LOCAL=$(git rev-parse HEAD)
REMOTE=$(git rev-parse origin/$CURRENT_BRANCH)
if [ "$LOCAL" = "$REMOTE" ]; then
echo "✅ Бот уже обновлен до последней версии"
echo ""
echo "Последний коммит:"
git log -1 --pretty=format:"%h - %s (%ar)" --abbrev-commit
exit 0
fi
# Показываем, какие коммиты будут применены
echo ""
echo "📝 Новые коммиты:"
git log HEAD..origin/$CURRENT_BRANCH --pretty=format:"%h - %s (%ar)" --abbrev-commit
# Обновляем код
echo ""
echo "⬇️ Применение обновлений..."
git pull origin $CURRENT_BRANCH
if [ $? -ne 0 ]; then
echo "❌ Ошибка при обновлении из git"
exit 1
fi
echo "✅ Код успешно обновлен"
# Перезапускаем бота
echo ""
echo "🔄 Перезапуск бота..."
systemctl restart LGBot.service
if [ $? -eq 0 ]; then
echo "✅ Бот успешно перезапущен"
# Ждем 2 секунды и проверяем статус
sleep 2
echo ""
echo "📊 Статус службы:"
systemctl status LGBot.service --no-pager -l | head -10
else
echo "❌ Ошибка при перезапуске бота"
exit 1
fi
echo ""
echo "🎉 Обновление завершено!"