- Updated `README.md` to include instructions for the new `redeploy-ubuntu.sh` script and added a link to the new `REDEPLOY_GUIDE.md`. - Created `REDEPLOY_GUIDE.md` detailing the redeployment process, including backup creation, code updates, and troubleshooting steps. - Introduced `redeploy-hint.md` for GitHub Actions automation example, outlining setup for automatic redeployment on push events. - Improved documentation structure for better navigation and clarity.
151 lines
4.2 KiB
Markdown
151 lines
4.2 KiB
Markdown
# 🚀 Быстрое обновление на Ubuntu
|
||
|
||
## Важно! ⚠️
|
||
|
||
Скрипт `redeploy-ubuntu.sh` **требует bash**, не используйте `sh`.
|
||
|
||
## ✅ Правильный способ запуска:
|
||
|
||
```bash
|
||
# Вариант 1: Через bash явно
|
||
cd ~/code-review-agent # или /opt/ai-review
|
||
sudo bash redeploy-ubuntu.sh
|
||
|
||
# Вариант 2: Сделать исполняемым
|
||
chmod +x redeploy-ubuntu.sh
|
||
sudo ./redeploy-ubuntu.sh
|
||
```
|
||
|
||
## ❌ Неправильно:
|
||
|
||
```bash
|
||
sudo sh redeploy-ubuntu.sh # НЕ ИСПОЛЬЗУЙТЕ sh!
|
||
```
|
||
|
||
## 🔧 Что исправлено:
|
||
|
||
1. ✅ Проверка наличия bash
|
||
2. ✅ Работа из любой директории проекта (не обязательно /opt/ai-review)
|
||
3. ✅ Backup создается в локальной директории `./backups/`
|
||
4. ✅ Работает без systemd сервиса (для dev окружения)
|
||
5. ✅ Не требует интерактивного подтверждения для non-git репозиториев
|
||
6. ✅ Более надежная обработка ошибок
|
||
|
||
## 📋 Workflow обновления:
|
||
|
||
### 1. Подготовка (на локальной машине):
|
||
|
||
```bash
|
||
# Внести изменения в код
|
||
git add .
|
||
git commit -m "Update feature"
|
||
git push
|
||
```
|
||
|
||
### 2. На сервере:
|
||
|
||
```bash
|
||
# Зайти на сервер
|
||
ssh user@your-server
|
||
|
||
# Перейти в директорию проекта
|
||
cd ~/code-review-agent # или где у вас установлен проект
|
||
|
||
# Обновить код (если git)
|
||
git pull
|
||
|
||
# ИЛИ скопировать новые файлы вручную:
|
||
# scp -r ./backend user@server:~/code-review-agent/
|
||
# scp -r ./frontend user@server:~/code-review-agent/
|
||
|
||
# Запустить redeploy
|
||
sudo bash redeploy-ubuntu.sh
|
||
```
|
||
|
||
### 3. Проверка:
|
||
|
||
```bash
|
||
# Проверить статус
|
||
systemctl status ai-review
|
||
|
||
# Или если без systemd:
|
||
ps aux | grep uvicorn
|
||
|
||
# Проверить логи
|
||
journalctl -u ai-review -f
|
||
# Или:
|
||
tail -f nohup.out
|
||
```
|
||
|
||
## 🐛 Troubleshooting:
|
||
|
||
### Ошибка: "This script requires bash"
|
||
|
||
```bash
|
||
# Используйте bash явно
|
||
sudo bash redeploy-ubuntu.sh
|
||
```
|
||
|
||
### Ошибка: Permission denied при создании backup
|
||
|
||
Это нормально - скрипт создаст backup в локальной директории `./backups/`
|
||
|
||
### Ошибка: Service не найден
|
||
|
||
Это нормально если вы не устанавливали systemd сервис. Скрипт все равно соберет проект.
|
||
|
||
### Frontend не собрался
|
||
|
||
```bash
|
||
cd frontend
|
||
rm -rf node_modules
|
||
npm install
|
||
npm run build
|
||
```
|
||
|
||
### Backend зависимости не установились
|
||
|
||
```bash
|
||
cd backend
|
||
source venv/bin/activate
|
||
pip install --upgrade pip
|
||
pip install -r requirements.txt
|
||
```
|
||
|
||
## 📊 Что делает скрипт:
|
||
|
||
1. **Останавливает сервис** (если установлен в systemd)
|
||
2. **Создает backup БД** в `./backups/backup-YYYYMMDD-HHMMSS/`
|
||
3. **Обновляет код** через git pull (если это git репозиторий)
|
||
4. **Обновляет зависимости backend** (Python пакеты)
|
||
5. **Применяет миграции БД** (создает новые таблицы)
|
||
6. **Собирает frontend** (React → static files)
|
||
7. **Запускает сервис** (если установлен в systemd)
|
||
|
||
## 🎯 Быстрые команды:
|
||
|
||
```bash
|
||
# Полное обновление
|
||
cd ~/code-review-agent && git pull && sudo bash redeploy-ubuntu.sh
|
||
|
||
# Только пересборка (без git pull)
|
||
cd ~/code-review-agent && sudo bash redeploy-ubuntu.sh
|
||
|
||
# Откат к предыдущей версии
|
||
cd ~/code-review-agent
|
||
sudo systemctl stop ai-review
|
||
sudo cp backups/backup-YYYYMMDD-HHMMSS/review.db backend/
|
||
git reset --hard HEAD~1
|
||
sudo bash redeploy-ubuntu.sh
|
||
```
|
||
|
||
## ✅ Готово!
|
||
|
||
Скрипт теперь работает:
|
||
- ✅ С bash (не sh)
|
||
- ✅ Из любой директории проекта
|
||
- ✅ Без интерактивных вопросов
|
||
- ✅ С локальными backups
|
||
- ✅ С или без systemd
|
||
|