feat: добавлена пометка типа операции (Build/Push) в истории сборок Dockerfile
- Добавлена колонка 'Тип' во все таблицы истории сборок - Для push операций отображается registry вместо платформ - Сохранение пользователя при создании push лога - Исправлена ошибка с logger в push_docker_image endpoint - Улучшено отображение истории сборок с визуальными индикаторами
This commit is contained in:
153
docs/web-interface-quickstart.md
Normal file
153
docs/web-interface-quickstart.md
Normal file
@@ -0,0 +1,153 @@
|
||||
# Быстрый старт веб-интерфейса 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.)
|
||||
Reference in New Issue
Block a user