code-review-agent/DEPLOYMENT.md
Primakov Alexandr Alexandrovich b297bcbba9 Add deployment documentation and enhance project setup scripts
- Introduced `DEPLOYMENT.md` for comprehensive deployment instructions.
- Added `start.bat` and `start.sh` scripts for unified project startup on Windows and Linux/Mac.
- Updated `.gitignore` to exclude additional files and directories.
- Enhanced `main.py` to serve static frontend files and handle SPA routing.
- Configured Vite to output the frontend build to the backend public directory.
- Minor adjustments in `ReviewDetail.tsx` for improved data handling.
2025-10-12 23:27:41 +03:00

9.1 KiB
Raw Blame History

🚀 Развертывание AI Code Review Platform

📋 Быстрый старт

Одна команда для запуска всего:

Linux/Mac:

./start.sh

Windows:

start.bat

Это автоматически:

  1. Проверит установку Node.js и Python
  2. Установит зависимости frontend
  3. Соберет frontend в backend/public
  4. Установит зависимости backend
  5. Создаст .env из примера (если нужно)
  6. Запустит сервер на http://localhost:8000

🔧 Требования

Системные требования:

  • Python: 3.10 или выше
  • Node.js: 18 или выше
  • npm: 9 или выше

Проверка установленных версий:

python --version   # или python3 --version
node --version
npm --version

⚙️ Настройка

1. Клонирование репозитория

git clone <repository-url>
cd platform/review

2. Конфигурация

Отредактируйте backend/.env:

# Ollama Configuration
OLLAMA_BASE_URL=http://localhost:11434
OLLAMA_MODEL=mistral:7b

# Master Git Tokens (optional)
MASTER_GITEA_TOKEN=your_gitea_token_here
MASTER_GITHUB_TOKEN=your_github_token_here

# Security
ENCRYPTION_KEY=your-32-character-encryption-key

Генерация ключа шифрования:

python -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())"

3. Запуск

# Linux/Mac
chmod +x start.sh
./start.sh

# Windows
start.bat

🏗️ Архитектура развертывания

Схема работы:

┌─────────────────────────────────────────┐
│         Пользователь                    │
│      http://localhost:8000              │
└──────────────┬──────────────────────────┘
               │
               ▼
┌─────────────────────────────────────────┐
│         FastAPI Backend                 │
│                                         │
│  ┌─────────────────────────────────┐   │
│  │  API Endpoints                  │   │
│  │  /api/repositories              │   │
│  │  /api/reviews                   │   │
│  │  /api/webhooks                  │   │
│  └─────────────────────────────────┘   │
│                                         │
│  ┌─────────────────────────────────┐   │
│  │  Static Files                   │   │
│  │  Serves: backend/public/        │   │
│  │  (React frontend build)         │   │
│  └─────────────────────────────────┘   │
└─────────────────────────────────────────┘
               │
               ├─────────► SQLite DB
               │
               ├─────────► Ollama (AI)
               │
               └─────────► Git APIs
                           (Gitea/GitHub/Bitbucket)

Как это работает:

  1. Frontend билдится в backend/public/
  2. Backend раздает статику из backend/public/
  3. Один порт (8000) для всего
  4. API доступно на /api/*
  5. Frontend на / (все остальные роуты)

📁 Структура после сборки

platform/review/
├── backend/
│   ├── public/              # ← Frontend build (создается автоматически)
│   │   ├── index.html
│   │   ├── assets/
│   │   │   ├── index-*.js
│   │   │   └── index-*.css
│   │   └── ...
│   ├── app/
│   ├── venv/
│   ├── .env
│   └── requirements.txt
├── frontend/
│   ├── src/
│   ├── package.json
│   └── vite.config.ts       # ← Настроен на build в ../backend/public
├── start.sh                  # ← Единый скрипт запуска (Linux/Mac)
└── start.bat                 # ← Единый скрипт запуска (Windows)

🔄 Процесс сборки

Что происходит при запуске start.sh / start.bat:

1. Проверка Node.js ✓
   → node --version

2. Проверка Python ✓
   → python --version

3. Установка зависимостей frontend ✓
   → cd frontend
   → npm install

4. Сборка frontend ✓
   → npm run build
   → Вывод: backend/public/

5. Установка зависимостей backend ✓
   → cd backend
   → python -m venv venv
   → pip install -r requirements.txt

6. Проверка .env ✓
   → Создание из .env.example если нужно

7. Запуск сервера ✓
   → uvicorn app.main:app --reload

🌐 Доступ к приложению

После запуска доступно:


🛠️ Разработка

Запуск в режиме разработки (с hot-reload):

Терминал 1 - Backend:

cd backend
source venv/bin/activate  # или venv\Scripts\activate на Windows
uvicorn app.main:app --reload

Терминал 2 - Frontend:

cd frontend
npm run dev

В этом режиме:

Пересборка frontend:

cd frontend
npm run build

Frontend автоматически соберется в backend/public/


🐳 Docker (опционально)

TODO: Добавить Dockerfile и docker-compose.yml


📊 Production Deployment

Для продакшена рекомендуется:

  1. Использовать Gunicorn + Uvicorn:
cd backend
gunicorn app.main:app \
  --workers 4 \
  --worker-class uvicorn.workers.UvicornWorker \
  --bind 0.0.0.0:8000
  1. Nginx как reverse proxy:
server {
    listen 80;
    server_name yourdomain.com;

    location / {
        proxy_pass http://localhost:8000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }

    location /ws {
        proxy_pass http://localhost:8000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}
  1. Systemd service:
[Unit]
Description=AI Code Review Platform
After=network.target

[Service]
Type=notify
User=www-data
WorkingDirectory=/path/to/platform/review/backend
ExecStart=/path/to/venv/bin/uvicorn app.main:app --host 0.0.0.0 --port 8000
Restart=always

[Install]
WantedBy=multi-user.target

🔧 Troubleshooting

Проблема: Frontend не отображается

Решение:

cd frontend
npm run build

Проблема: Backend не запускается

Проверьте:

  1. Установлен ли Python 3.10+
  2. Создано ли виртуальное окружение
  3. Установлены ли зависимости
  4. Корректен ли .env файл

Проблема: Ollama недоступен

Убедитесь что:

# Ollama запущен
ollama serve

# Модель скачана
ollama pull mistral:7b

# Ollama доступен
curl http://localhost:11434/api/version

Проблема: Ошибки шифрования токенов

Удалите БД и пересоздайте:

rm backend/review.db
# Перезапустите сервер

📝 Полезные команды

# Проверка статуса
ps aux | grep uvicorn

# Просмотр логов
tail -f backend/logs/app.log  # если настроено логирование

# Остановка сервера
# Ctrl+C в терминале где запущен

# Очистка
rm -rf backend/public/
rm -rf frontend/node_modules/
rm -rf backend/venv/

Готово!

Теперь у вас есть:

  • 🚀 Единая команда запуска
  • 📦 Автоматическая сборка frontend
  • 🌐 Один порт для всего
  • 🔄 Hot-reload в разработке
  • 📚 Документация

Запускайте и наслаждайтесь! 🎉