- Добавлена колонка 'Тип' во все таблицы истории сборок - Для push операций отображается registry вместо платформ - Сохранение пользователя при создании push лога - Исправлена ошибка с logger в push_docker_image endpoint - Улучшено отображение истории сборок с визуальными индикаторами
154 lines
5.1 KiB
Markdown
154 lines
5.1 KiB
Markdown
# Быстрый старт веб-интерфейса DevOpsLab
|
||
|
||
**Автор:** Сергей Антропов
|
||
**Сайт:** https://devops.org.ru
|
||
|
||
## ✅ Что уже сделано
|
||
|
||
1. ✅ Создана git ветка `feature/web-interface`
|
||
2. ✅ Создана базовая структура проекта
|
||
3. ✅ Настроен FastAPI с базовыми шаблонами
|
||
4. ✅ Реализован MakeExecutor для выполнения команд
|
||
5. ✅ Создан Dashboard с базовой статистикой
|
||
6. ✅ Настроены HTMX шаблоны
|
||
|
||
## 🚀 Запуск
|
||
|
||
### 1. Установка зависимостей
|
||
|
||
```bash
|
||
cd app
|
||
pip install -r requirements.txt
|
||
```
|
||
|
||
### 2. Настройка окружения
|
||
|
||
```bash
|
||
# Скопируйте пример конфигурации
|
||
cp env.example .env
|
||
|
||
# Отредактируйте .env (особенно PROJECT_ROOT)
|
||
# PROJECT_ROOT должен указывать на корень проекта DevOpsLab
|
||
```
|
||
|
||
### 3. Запуск приложения
|
||
|
||
```bash
|
||
# Из директории app/
|
||
uvicorn main:app --reload --host 0.0.0.0 --port 8000
|
||
|
||
# Или через Python
|
||
python main.py
|
||
```
|
||
|
||
### 4. Открыть в браузере
|
||
|
||
- Веб-интерфейс: http://localhost:8000
|
||
- API документация: http://localhost:8000/api/docs
|
||
|
||
## 📁 Структура проекта
|
||
|
||
```
|
||
app/
|
||
├── api/v1/endpoints/ # API endpoints
|
||
│ └── stats.py # ✅ Статистика (реализовано)
|
||
├── core/ # Ядро
|
||
│ ├── config.py # ✅ Конфигурация
|
||
│ └── make_executor.py # ✅ Выполнение Makefile команд
|
||
├── templates/ # HTMX шаблоны
|
||
│ ├── base.html # ✅ Базовый шаблон
|
||
│ ├── components/ # ✅ Компоненты (navbar, sidebar)
|
||
│ └── pages/ # Страницы
|
||
│ └── dashboard.html # ✅ Dashboard
|
||
├── static/ # Статические файлы
|
||
│ ├── css/main.css # ✅ Стили
|
||
│ └── js/app.js # ✅ JavaScript
|
||
└── main.py # ✅ Точка входа FastAPI
|
||
```
|
||
|
||
## 📋 Следующие шаги
|
||
|
||
### Приоритет 1: Базовый функционал
|
||
- [ ] Реализовать список ролей (`/roles`)
|
||
- [ ] Реализовать создание роли (`/roles/create`)
|
||
- [ ] Реализовать тестирование роли (`/roles/{name}/test`)
|
||
|
||
### Приоритет 2: Preset'ы и тестирование
|
||
- [ ] Управление preset'ами (`/presets`)
|
||
- [ ] WebSocket для live логов тестирования
|
||
- [ ] История тестов (`/tests`)
|
||
|
||
### Приоритет 3: Деплой и импорт/экспорт
|
||
- [ ] Деплой на живые серверы (`/roles/{name}/deploy`)
|
||
- [ ] Экспорт ролей (`/roles/{name}/export`)
|
||
- [ ] Импорт ролей (`/roles/import`)
|
||
|
||
### Приоритет 4: Дополнительно
|
||
- [ ] База данных для истории
|
||
- [ ] Celery для фоновых задач
|
||
- [ ] Аутентификация
|
||
|
||
## 🔧 Разработка
|
||
|
||
### Добавление нового endpoint
|
||
|
||
1. Создайте файл в `app/api/v1/endpoints/`
|
||
2. Создайте роутер:
|
||
```python
|
||
from fastapi import APIRouter
|
||
router = APIRouter()
|
||
|
||
@router.get("/example")
|
||
async def example():
|
||
return {"message": "Hello"}
|
||
```
|
||
|
||
3. Подключите в `app/api/v1/router.py`:
|
||
```python
|
||
from app.api.v1.endpoints import example
|
||
api_router.include_router(example.router, prefix="/example")
|
||
```
|
||
|
||
### Добавление новой страницы
|
||
|
||
1. Создайте шаблон в `app/templates/pages/`
|
||
2. Добавьте роут в `app/main.py`:
|
||
```python
|
||
@app.get("/example", response_class=HTMLResponse)
|
||
async def example_page(request: Request):
|
||
return templates.TemplateResponse("pages/example.html", {"request": request})
|
||
```
|
||
|
||
## 📚 Документация
|
||
|
||
- `docs/WEB_INTERFACE_PROPOSAL.md` - Полное предложение
|
||
- `docs/WEB_INTERFACE_DETAILS.md` - Детали работы
|
||
- `docs/WEB_INTERFACE_DEPLOY_IMPORT_EXPORT.md` - Деплой, импорт, экспорт
|
||
- `docs/WEB_INTERFACE_QUICKSTART.md` - Быстрый старт
|
||
|
||
## 🐛 Troubleshooting
|
||
|
||
### Ошибка: ModuleNotFoundError
|
||
|
||
Убедитесь, что вы установили зависимости:
|
||
```bash
|
||
pip install -r requirements.txt
|
||
```
|
||
|
||
### Ошибка: PROJECT_ROOT не найден
|
||
|
||
Проверьте `.env` файл и убедитесь, что `PROJECT_ROOT` указывает на правильный путь.
|
||
|
||
### Ошибка: Порт уже занят
|
||
|
||
Измените порт в `.env` или убейте процесс:
|
||
```bash
|
||
lsof -ti:8000 | xargs kill
|
||
```
|
||
|
||
## 📝 Примечания
|
||
|
||
- Проект находится в ветке `feature/web-interface`
|
||
- Все изменения должны быть в директории `app/`
|
||
- Не изменяйте существующий код проекта (roles/, molecule/, etc.)
|