- 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.
9.1 KiB
9.1 KiB
🚀 Развертывание AI Code Review Platform
📋 Быстрый старт
Одна команда для запуска всего:
Linux/Mac:
./start.sh
Windows:
start.bat
Это автоматически:
- ✅ Проверит установку Node.js и Python
- ✅ Установит зависимости frontend
- ✅ Соберет frontend в
backend/public - ✅ Установит зависимости backend
- ✅ Создаст
.envиз примера (если нужно) - ✅ Запустит сервер на 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)
Как это работает:
- Frontend билдится в
backend/public/ - Backend раздает статику из
backend/public/ - Один порт (8000) для всего
- API доступно на
/api/* - 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
🌐 Доступ к приложению
После запуска доступно:
- Frontend (UI): http://localhost:8000
- API: http://localhost:8000/api
- API Docs (Swagger): http://localhost:8000/docs
- WebSocket: ws://localhost:8000/ws
🛠️ Разработка
Запуск в режиме разработки (с 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: http://localhost:5173
- Backend: http://localhost:8000
- Frontend проксирует API запросы на backend
Пересборка frontend:
cd frontend
npm run build
Frontend автоматически соберется в backend/public/
🐳 Docker (опционально)
TODO: Добавить Dockerfile и docker-compose.yml
📊 Production Deployment
Для продакшена рекомендуется:
- Использовать Gunicorn + Uvicorn:
cd backend
gunicorn app.main:app \
--workers 4 \
--worker-class uvicorn.workers.UvicornWorker \
--bind 0.0.0.0:8000
- 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";
}
}
- 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 не запускается
Проверьте:
- Установлен ли Python 3.10+
- Создано ли виртуальное окружение
- Установлены ли зависимости
- Корректен ли
.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 в разработке
- 📚 Документация
Запускайте и наслаждайтесь! 🎉