Skip to content

Основная информация

Определения

Ядро битрикс - Директория 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\Database
  • Entity - Cущность БД (Запись в БД) - может наследоваться от разных вспомогательных классов ядра, но по сути является \Realweb\Api\Model\Data\Data
  • Collection - Коллекция сущностей БД - может наследоваться от разных вспомогательных классов ядра, но по сути является \Realweb\Api\Model\Data\Collection

Опциональные файлы ORM для "своих" таблиц (Не требуется для модулей, использующих в качестве таблиц ИБ)

ORM для инфоблоков следует разделять на директории Element - для элементов и Section - для разделов

Пример ORM

Модули - переиспользуемое решения 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/

После разработки нового модуля необходимо:

  1. В корне модуля необходимо разместить файл .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 необходимо указать имя модуля

  1. В репозитории 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 необходимо указать имя модуля

  1. Закоммитить изменения с помощью утилиты realweb.api.console
shell
php bitrix/tools/console version

После этого, благодаря файлу .gitlab-ci.yml информация о модуле попадет в satis

  1. После обновления информации о модуле в satis необходимо добавить модуль в файл composer.json и обновить модули.