#!/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 "🎉 Обновление завершено!"