Appearance
Основная информация
Определения
Ядро битрикс - Директория bitrix со всеми стандартными модулями. Может обновляться из админки. gitignore.
Ядро - Модуль битрикса realweb.api, который (практически) не предоставляет никакой функциональности, но служит инструментом для написания других модулей. Имеет инструмент обновления версий. Устанавливается через зависимости composer. gitignore.
Модуль битрикс - Модули битрикса в их классическом понимании. "Ядерные модули" располагаются в директории bitrix, собственные - в директории local.
Модуль - модуль битрикса realweb.api предоставляющий конкретную функциональность. Может быть 2-х разновидностей:
- Переиспользуемое решение, модуль битрикса, устанавливается посредством composer. Модули расположены в едином репозитории. Всегда имеет название realweb.api.{название-модуля}. Имеет инструмент обновления версий.
gitignore. - Директория основных модулей проекта. Располагается в (изначально пустом) модуле битрикса realweb.api.module. Подробнее
Orm структура - набор необходимых классов для работы с сущностью БД (Элементы, Разделы и т.п): Database, Entity, Collection и опционально Table
Модули проекта внутри realweb.api.module
Каждый модуль предоставляет отдельную функциональность. Часто модули основаны на выводе информации из ИБ, но не всегда.
Модуль располагается в своей собственной директории в корневой директории lib
Название директории модуля (как и все остальные директории внутри) должно начинаться с большой буквы, например Catalog, News и т.д.
Основная директория может содержать только 2 директории - Controller и Model
Controller
Все http запросы обращаются к контроллерам внутри этой директории. Подробнее про работу контроллеров
Model
Содержит ORM классы для работы с БД и другие классы модуля.
ORM
ORM классы модуля для каждой таблицы располагается в собственной директории.
С точки зрения разработки каждый отдельный ИБ является отдельной таблицей
Обязательные файлы ORM:
Database- База данных модуля, содержит основной запрос к таблице, может наследоваться от разных вспомогательных классов ядра, но по сути является \Realweb\Api\Model\Data\DatabaseEntity- Cущность БД (Запись в БД) - может наследоваться от разных вспомогательных классов ядра, но по сути является \Realweb\Api\Model\Data\DataCollection- Коллекция сущностей БД - может наследоваться от разных вспомогательных классов ядра, но по сути является \Realweb\Api\Model\Data\Collection
Опциональные файлы ORM для "своих" таблиц (Не требуется для модулей, использующих в качестве таблиц ИБ)
Table- класс, описывающий таблицу, наследуется от \Realweb\Api\Model\Orm\DataManager
ORM для инфоблоков следует разделять на директории Element - для элементов и Section - для разделов
Модули - переиспользуемое решения realweb.api.*
Данные модули по сути работы не отличаются от модулей проекта, но имеют собственный репозиторий на https://gitlab.runway-agency.ru/dev
Сами модули ставятся через composer в директорию local и имеют такие же правила и структуру, как и модули проекта.
Обновление ядра и модулей realweb.api.*. Версионность
Ядро и модули хранятся в репозиториях https://gitlab.runway-agency.ru/dev/
Для того чтобы установить пакет модуля на проект, достаточно указать общее хранилище всех модулей https://satis.runway-agency.ru/
"repositories": [
{
"type": "composer",
"url": "https://satis.runway-agency.ru/"
}
],Доступ к https://satis.runway-agency.ru/ осуществляется через логин и пароль учетной записи Б24
shell
composer config http-basic.satis.runway-agency.ru {ЛОГИН В Б24} {ПАРОЛЬ В Б24} --globalВерсии ядра realweb.api
Для ядра существуют 3 типа версий
major- Отсутствие обратной совместимостиminor- Добавление новой функциональностиfix- Исправление ошибок
При разработке нового проекта используется версия dev-master - самая актуальная версия кода.
После перевода проекта в production версия ядра фиксируется в файле composer.json на актуальную минорную и в дальнейшем получает только fix обновления.
Внесение изменений в ядро
Все изменения в ядро вносятся в рамках проекта, с которым идет работа.
Для фиксации изменений необходимо воспользоваться функциональностью модуля realweb.api.console
Чтобы это стало возможно, необходимо устанавливать пакеты с параметром
--prefer-source
composer install --prefer-sourceПосле фиксации изменений необходимо обновить проект командой
composer update --prefer-sourceВерсии модулей realweb.api.*
Каждый модуль realweb.api.* зависит от ядра realweb.api по следующей схеме:
- Мажорная версия модуля всегда совпадает с мажорной версией ядра, на котором написано решение
- Минорная версия модуля является major для данного модуля - т.е. обратно не совместима.
- Фикс версия модуля содержит и новую функциональность и исправление ошибок.
Разработка и доработка модулей происходит по такому же принципу, как и работа с ядром. Для фиксации изменений используется та же функциональность модуля realweb.api.console
Список всех доступных модулей доступен на странице https://satis.runway-agency.ru/
Разработка нового модуля. Satis
Все модули realweb.api.* хранятся в репозитории https://satis.runway-agency.ru/
После разработки нового модуля необходимо:
- В корне модуля необходимо разместить файл
.gitlab-ci.yml
yaml
stages:
- deploy
variables:
RW_GITLAB_HOST: $RW_GITLAB_HOST
RW_GITLAB_USER: $RW_GITLAB_USER
RW_GITLAB_SATIS_ROOT: $RW_GITLAB_SATIS_ROOT
deploy-production:
stage: deploy
resource_group: production
when: always
script:
- ssh $RW_GITLAB_USER@$RW_GITLAB_HOST "cd $RW_GITLAB_SATIS_ROOT && ./bin/satis build satis.json servergrove-satis/ realweb/api.console"Вместо realweb/api.console необходимо указать имя модуля
- В репозитории satis https://gitlab.runway-agency.ru/dev/satis в файл satis.json необходимо разместить информацию о модуле
{
"name": "realweb/api.console",
"type": "vcs",
"url": "git@gitlab.runway-agency.ru:dev/realweb.api.console.git"
}Вместо realweb/api.console необходимо указать имя модуля
- Закоммитить изменения с помощью утилиты
realweb.api.console
shell
php bitrix/tools/console versionПосле этого, благодаря файлу .gitlab-ci.yml информация о модуле попадет в satis
- После обновления информации о модуле в satis необходимо добавить модуль в файл composer.json и обновить модули.