Портальная часть Системы L2U
Структура проекта
- configs - папка для настроек, специфичных для различных окружений
- extensions - папка для различных расширений стандартного функционала портала (хуки)
- modules - папка для хранения модулей
- themes - папка для хранения тем
- override - папка для хранения модулей, которые должны деплоиться через osgi/marketplace/override
- tests - папка для хранения функциональных тестов
Сборка проекта
- После клонирования репозитория нужно выполнить команду
./gradlew initBundle
- выполняем команду
./gradlew clean build deploy
- Все необходимые артефакты будут расположены в папке bundles
Использование моков
Для использования моков вместо сервисного слоя необходимо деплоить артефакты *-mock вместо *-impl
Conventions
-
Для независимости от сервисного слоя разрабатываем mock модули
-
Используем классический фиче-бранч:
-
Под каждую задачу создаётся отдельная ветка от develop
-
Коммиты разделяются логически и имеют осмысленный текст
-
Слияние в develop происходит через pull-request:
- в аппруверы ставятся техлид и тестировщик
-
При необходимости слияния в master создается ветка с названием вида "rc-ВЕРСИЯ" из develop
-
После тестирования релиз-кандидата ветка rc сливается в master и проставляется тег с соответствующей версией. Также ветка master вливается в develop
-
При необходимости хотфикса: создается ветка с названием вида "hotfix-ВЕРСИЯ". В остальном аналогично 1.5
-
Используем единые правила форматирования кода (emdev-style.xml)
-
Переменные объявляются вверху класса
-
При объявлении reference по возможности сокращаем имя переменной (Например: userLocalService -> userLS)
-
Если возникла необходимость вытащить код из исходиков лайфрея
-
Размещаем его в оригинальном пакете (com.liferay...)
-
Все изменения вносим с помощью наследования в пакетах (ru.emdev...)
-
Если необходимо внести изменения именно в оригинальный файл (например, изменить область видимости)
-
В JavaDoc оригинального файла необходимо указать ссылку на новый файл и номер задач
-
Имя нового файла должно совпадать с именем оригинального файла
Необходимые настройки
- В портлетах проекта осуществляются редиректы к портлетам из других инстансов портала. Без дополнительных настроек при
каждом таком редиректе liferay будет сыпать в логи warning, что редирект не позволен.
Чтобы этого избежать необходимо добавить несколько property в portal.ext-properties. Варианта 2:
-
redirect.url.security.mode=domain
redirect.url.domains.allowed=*.emdev.ru
Первая property устанавливает, проверка возможности произвести редирект осуществляется по доменному имени.
Второй пропертей указываются разрешенные доменные имена.
-
redirect.url.security.mode=ip
redirect.url.ips.allowed=127.0.0.1
Первая property устанавливает, проверка возможности произвести редирект осуществляется по ip-адресу.
Второй пропертей указываются разрешенные ip-адреса.
Редирект будет работать и без указанных property, но при каждом переходе в логах будет WARNING
Фронтенд
Для фронтенд-разработки модулей проекта, некоторый dev-функционал (например настройки прокси)
вынесен на уровень корня.
Чтобы он заработал, нужно
-
Авторизоваться во внутреннем npm, если ещё не делали этого ранее, командой
npm login --registry=https://nexus-l2u-cicd.apps.okd.listen2u.tech/repository/l2u-npm-host
,
используя ваши учётный данные LDAP.
Документация
-
Выполнить npm i
в корне портала.
-
Создать файл .env
(он в gitignore) со следующим содержимым (cookies с авторизацией на dev-стенде):
PROXY_COOKIES="Тут должна быть строка заголовка Cookie, которую нужно скопировать из любого запроса браузера после авторизации на dev-стенде"
Документация
Техническая документация по проекту собирается и запускается командой npm run docs
.
Предварительно, нужно выполнить первые два шага из раздела Фронтенд выше.