Проект
Contents
Проект#
Директория на диске, хранящая файлы для сборки решения.
Структура проекта#
module1
Прикладной модульmodule2
moduleN
projectModule
Проектный модульproject
Мета информация по сборкеbuild
Каталог находится вне системы контроля версий, и содержит данные специфичные для локальной сборки.lib
Локальные jar библиотеки для запуска сервера, и утилиты прикладной разработкиconfig.yml
Создается при необходимости локального переопределения конфигурации проекта
build.sbt
Декларация сборки для sbtproject.yaml
Конфигурация проекта
Конфигурация проекта#
Конфигурация проекта описывает правила сборки прикладного проекта.
Конфигурация проекта располагается в проекте по адресу application/project.yaml
Конфигурация перечисляет перечень модулей используемых в сборке решения, а так же их источник. В случае необходимости источник проекта можно переключить, получая таким образом возможность отлаживать баг фиксы с текущего проекта.
Внимание
После отладки баг фикса в комплекте сборки необходимо выпустить пул реквест в ветку разработки модуля и дождаться нового релиза. В случае необходимости выпустить решение не дожидаясь релиза комплекта сборки. Необходимо переключится на режим сборки по исходному коду для всех дочерних модулей.
Источники модуля#
local#
Код модуля находится в системе контроля версий исходного проекта. Подключается по исходному коду.
git#
Код модуля находится в отдельном git
репозитории. Подключается по исходному коду.
Совет
Для массовой синхронизации модулей используйте утилиту gsf-cli
base#
Модуль выпускается в базовом комплекте сборки. Подключается в виде jar артефакта.
buildKit#
Модуль выпускается в прикладном комплекте сборки. Подключается в виде jar артефакта.
Пример конфигурации#
#Комплект сборки, куда будет происходить публикация прикладных модулей
buildKit:
name: ru.bitec.app
version: 1.0.1
#Комплект сборки на основе которого работает проект
#Базовый комплект сборки обычно содержит сервер приложений и базовые модули
baseBuildKit:
name: ru.bitec.base
version: 1.0.1
#Источник сервера приложений
#Используется утилитой gs3-cli для подготовки проекта к работе
applicationServer:
source: "base://"
#Источник плагина для сборки
sbtPlugin:
source: "base://"
modules:
#Подключение модуля через jar артефакт из maven репозитория
- gtkjpa:
source: "base://"
- gtk:
source: "base://"
- btk:
source: "base://"
#Подключение модуля через исходный код из удаленного репозитория
- bts:
source: "git://{host}/bts.git"
branch: main
isPublish: true
Конфигурация репозиториев#
Для того чтобы обеспечить возможность собирать проект в разных локальных сетях. Настройка репозиториев вынесена в отдельный файл и может быть переопределена.
По умолчанию настройка репозиториев берется из файла: application/project/repositories/default.yaml
Пример настройки:
repositories:
- name: maven-global
url: "https://repo.global-system.ru/artifactory/libs-release"
publishRepository:
name: app-global
url: "https://repo.global-system.ru/artifactory/build-kit"
#Запрашивать данные авторизации из менеджера учетных данных для данного репозитория
isLoginRequired: true
Работа в изолированной сети#
В случаи если требуется настроить проект таким образом чтобы он обращался только к репозиториям локальной сети.
Необходимо:
Настроить глобальную конфигурацию репозиториев
sbt
Для этого добавьте локальные репозитории в файл~/.sbt/repositories
[repositories] maven-proxy: http://host/repository/maven/ buildkit: http://host/repository/buildkit/
Включите изоляцию репозиториев
Это позволить обращаться только к локальным репозиториям, игнорирую репозитории вшитые в программный код. Для этого в файле проектаapplication/.sbtopts
добавьте флаг-Dsbt.override.build.repos=true
Примечание
Включение данного флага не перекрывает настройки авторизации
Смотрите: Прокси репозитории
Интеграция в vcs#
Исходный код проекта может располагаться в произвольной системе контроля версий. Модуль может быть расположен как в репозитории самого проекта так и в удаленном репозитории. В момент инициализации проекта код из удаленного репозитория добавляется в каталог основного проекта.
Совет
Модули из удаленного репозитория следует добавить в игнор лист репозитория проекта.
Бранч-стратегии#
После инициализации проекта можно пользоваться штатными средствами бранчивания используемой vcs
.
Предупреждение
В случае наличия изменений нарушающих обратную совместимость схемы базы данных желательно внести эти изменения в мастер ветку, для минимизации конфликтов в схеме базы дынных между разработчиками. Если изменения слишком обширны, стоит использовать локальную базу разработки для их тестирования.
Публикация решения#
Публикация решения происходит средствами CI, например jenkins.
Команда sbt для публикации решения в локальный каталог:
sbt publishSolution
Публикация комплекта сборки#
Публикация комплекта сборки происходит средствами CI
Команда sbt для публикации решения в репозиторий:
sbt publish