Правила разработки
Отправной точкой разработки является issue (проблема или постановка), оформленная в трекере задач
Актуальная ветка разработки и поддержки: 3.6. Более ранние линейки (3.5 и ниже) не поддерживаются.
Описание задачи
Формулировка задачи или проблемы должна быть однозначно понята программистом:
- для расширения функционала — озвучить бизнес-проблематику;
- для дефектов бизнес-проблематика тоже приоритетна; если дефект чисто внутренний, достаточно технического описания.
В формулировке может быть предложена реализация.
Пример:
- неправильно: «требуется перенести хранение логов из SQL базы в timeseries базу»;
- лучше: «уменьшить загрузку SQL-сервера и ускорить работу за счёт переноса логов в timeseries-хранилище».
Задачу нужно пометить тегами подсистемы и класса (проблема / задача).
Приоритеты
Приоритет — стабильность. При выборе задачи предпочтительны дефекты (тег bug / #bug).
Производительность — ключевая ценность Glaber: в UI и на сервере избегать лишних обращений к БД/API и тяжёлых полных сканов списков.
Процесс внесения изменений
- Создать отдельную git-ветку с номером issue (например
fix-1045или1045-maintence-race). - Внести изменения; для пользовательски видимых правок — запись в
ChangeLog.glaberи при необходимости документацию. - Создать Merge request в целевую ветку (
3.6). MR должен быть просмотрен другим автором перед слиянием.
Версионирование Glaber — MAJOR.MINOR.PATCH (сейчас линейка 3.6.x). При выпуске пакета / тега поднимается patch (или minor при существенных изменениях линейки). Ориентир: SemVer 2.0, с учётом принятой в проекте схемы 3.6.N на каждый релизный билд.
Нумерация версии в исходниках
При релизе / сборке пакетов синхронно обновить GLABER_VERSION в:
(не путать с устаревшими путями вроде ui/defines.inc.php / include/zbxcommon.h.)
Чек-лист внесения изменений
- [ ] Есть / обновлены автотесты там, где поведение проверяется автоматически (юнит, API, PHPUnit); для чисто UI/визуальных правок — осмысленный ручной чек-лист вместо слабых тестов
- [ ] Обновлена пользовательская документация в этом же репозитории:
docs/docs/(MkDocs → docs.glaber.ru). Предпочтительно русские операторские гайды вdocs/docs/ru/. Отдельный репозиторийglaber-docsустарел — не править - [ ] Обновлены номера
GLABER_VERSIONвinclude/version.hиui/include/defines.inc.php(при выпуске) - [ ] Создана запись в
ChangeLog.glaber(ссылка на issue как#NNN) - [ ] Если меняются директивы конфигурации — правки в прототипах
.confи в документации по конфигу - [ ] Если меняются DDL — обновлены описания структур, пересобраны DDL, согласована PHP/API-схема
- [ ] Для UI на Vue:
cd ui && npm run buildперед проверкой production-сборки; стили тем — только через Sass (см. ниже)
Сборка пакетов в репозитории: правила сборки.
Локальная сборка и запуск сервера: ./autorun.sh (-m make, -r только запуск, -b -c -m полный rebuild). См. также сборку из исходников и библиотеки.
Веб-интерфейс (PHP + Vue)
Активная тема 3.6 — миграция списков на Vue (CglbTable + views в ui/src/).
- Гайды в репозитории:
ui/src/readme_ru.md/ui/src/readme_en.md, колонки —ui/src/columnLayouts/README.md - Dev:
cd ui && npm install && npm run dev(Vite HMR); production:npm run build→ui/dist/ - Массовые действия — через JSON API-контроллеры (
item.delete,item.enable, …), не через устаревшие form POST, где страница уже мигрирована - Учитывать контекст host vs template (навигация
glbHostNavи существующие view) - Не ломать соседние legacy PHP-таблицы при миграции соседних экранов
Темы CSS (legacy Sass)
Глобальные стили тем — только в sass/stylesheets/sass/**/*.scss. Собранные ui/assets/styles/*-theme.css не править вручную. После правок:
./sass/compile-themes.sh
Стили внутри Vue SFC идут через Vite отдельно.
Документация сайта
Исходники сайта документации — каталог docs/ этого репозитория (mkdocs.yml, docs/docs/…). Локальный просмотр: docs/preview.sh (если доступен в дереве).
При пользовательски видимых изменениях обновляйте соответствующие страницы в том же MR / change set, что и код.
Ссылки для разработчиков
| Тема | Где |
|---|---|
| Зависимости / библиотеки | LIBRARIES_AND_DEPENDENCIES_ru, EN: LIBRARIES_AND_DEPENDENCIES |
| Dev-стенд (Debian) | EN: system init |
| Dev-стенд (RHEL/OL10) | EN: RHEL/OL10 |
| ValueCache (обзор / programmer) | EN |
| Сравнение с upstream Zabbix | отдельный checkout upstream при портировании; Glaber-специфика часто под glb_* / src/libs/glb_* |