Skip to content

Правила разработки

Отправной точкой разработки является issue (проблема или постановка), оформленная в трекере задач

Актуальная ветка разработки и поддержки: 3.6. Более ранние линейки (3.5 и ниже) не поддерживаются.

Описание задачи

Формулировка задачи или проблемы должна быть однозначно понята программистом:

  • для расширения функционала — озвучить бизнес-проблематику;
  • для дефектов бизнес-проблематика тоже приоритетна; если дефект чисто внутренний, достаточно технического описания.

В формулировке может быть предложена реализация.

Пример:

  • неправильно: «требуется перенести хранение логов из SQL базы в timeseries базу»;
  • лучше: «уменьшить загрузку SQL-сервера и ускорить работу за счёт переноса логов в timeseries-хранилище».

Задачу нужно пометить тегами подсистемы и класса (проблема / задача).

Приоритеты

Приоритет — стабильность. При выборе задачи предпочтительны дефекты (тег bug / #bug).

Производительность — ключевая ценность Glaber: в UI и на сервере избегать лишних обращений к БД/API и тяжёлых полных сканов списков.

Процесс внесения изменений

  1. Создать отдельную git-ветку с номером issue (например fix-1045 или 1045-maintence-race).
  2. Внести изменения; для пользовательски видимых правок — запись в ChangeLog.glaber и при необходимости документацию.
  3. Создать 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_*