Конфигурационные файлы проекта#
Какой файл за что отвечает#
Файл |
Назначение |
|---|---|
|
Внешний файл настройки установки GSF CLI: инструменты, список проектов, их Git URL и ветки. Путь передаётся в |
|
Сохранённое состояние CLI: проекты, активный проект, headless, путь к ключу, зашифрованные credentials. Изменяется командами CLI. |
|
Мастер-ключ шифрования секретов; хранится в каталоге, выбранном при регистрации. |
|
Конфигурация прикладного решения: комплект сборки, сервер, плагины и модули. Приходит из Git-проекта. |
|
Репозитории прикладной сборки по умолчанию: источники артефактов и публикации. Здесь |
|
Сформированные настройки сборки с |
|
Источники для SBT launcher и принудительного выбора репозиториев. На Windows |
|
Обязательные основной файл и копия credentials для закрытых SBT-репозиториев. |
config.json и project.yaml решают разные задачи. Изменение пути SBT в конфигурации CLI не меняет репозитории внутри
прикладного проекта. Git credentials в store.json также не заменяют файлы доступа SBT.
Примеры config.json#
Linux:
{
"sbt_home": "/opt/global/sbt",
"concurrent_module_updates": 1,
"projects": [
{
"name": "main",
"project_source": "https://git.example.org/group/configuration-project.git",
"project_branch": "main",
"jdk_home": "/usr/lib/jvm/bellsoft-java21-amd64",
"build_system": "sbt",
"publish_type": "SNAPSHOT"
}
]
}
Windows:
{
"sbt_home": "C:\\programs\\sbt",
"concurrent_module_updates": 1,
"projects": [
{
"name": "main",
"project_source": "https://git.example.org/group/configuration-project.git",
"project_branch": "main",
"jdk_home": "C:\\Program Files\\Java\\jdk-21",
"build_system": "sbt",
"publish_type": "SNAPSHOT"
}
]
}
Замените Git URL, имя ветки и пути фактическими значениями. В Windows JSON обратная косая черта удваивается. JDK должен
быть версии 21, с java и javac в bin.
Поля верхнего уровня#
Поле |
Что задаёт |
Если поле отсутствует |
|---|---|---|
|
Каталог SBT с |
Сохраняется текущее значение; у новой конфигурации оно пустое. Запуск команды может использовать оставшийся |
|
Число одновременных обновлений модулей. |
Сохраняется текущее значение; начальное значение — |
|
Массив задержек в секундах перед попытками обновления модуля, например |
Начальный массив — |
|
Полный список проектов данной установки. |
Используется пустой список. |
Для concurrent_module_updates используйте положительное целое число. Это параллельность загрузки модулей внутри
команды, а не разрешение на одновременные CI-сборки в общем workspace.
У module_update_retry_intervals обнаружено расхождение в коде: load_config принимает поле без точки, а чтение
сохранённого store.json ищет .module_update_retry_intervals. Поэтому пользовательское значение не восстанавливается
обычным образом при следующем запуске. До исправления кода не рассчитывайте на изменение интервалов через внешний файл.
Поля проекта#
Поле |
Назначение и поведение |
|---|---|
|
Обязательное имя проекта в GSF CLI. По нему команда сопоставляет новые и уже зарегистрированные проекты. Используйте уникальные имена. |
|
Обязательный Git URL, заканчивающийся на |
|
Ветка Git. Если поле отсутствует или пустое, записывается |
|
Каталог JDK 21. Парсер допускает отсутствие поля, но для новой установки укажите его явно. Для существующего проекта без поля сохраняется прежнее значение. |
|
Система сборки. Для описанного получения |
|
|
|
Необязательное переопределение источника GlobalServer. Например, URL |
Входное поле project_source_type не управляет загрузкой: текущий load_config сам определяет тип по project_source.
Для обычного Git записывается vcs, а lxc:// завершается NotImplementedError. Поэтому в примерах это поле не
требуется.
Не переносите в config.json произвольные поля из store.json: загрузчик читает только перечисленные настройки.
Headless переключается командами enable_headless/disable_headless, активный проект — activate_project,
credentials — менеджером учётных данных.
Загрузка и изменение конфигурации#
Из каталога установленного GSF CLI:
./config.sh load_config -f /opt/global/builds/config.json
.\config.cmd load_config -f 'C:\programs\builds\config.json'
Внимание
При загрузке CLI удаляет проекты, чьи имена отсутствуют в projects, вместе с исходниками, сервером, ярлыками, окружением IDEA и кешем. Пустой список удаляет все зарегистрированные проекты. Перед запуском проверьте полный состав файла.
Для существующих проектов применяются правила отдельных полей из таблицы. Команда не скачивает исходники, не проверяет
доступность репозиториев и не делает проект активным. Далее запускайте manage.sh -p <project_name> refresh или
manage.cmd -p <project_name> refresh.
load_config применяет изменения по ходу обработки; не считайте его предварительной проверкой без записи. Сначала
проверьте JSON и значения путей. Полную последовательность с регистрацией ключа и проверкой результата смотрите в главе
своей ОС.
Файлы закрытых репозиториев#
repositories задаёт источники, а .credentials — realm, host, user, password. Содержимое .sbt/.credentials
копируется в .ivy2/.credentials; после смены токена обновляются оба файла.
В каждом процессе сборки должны быть заданы SBT_CREDENTIALS и три свойства через JAVA_TOOL_OPTIONS:
sbt.boot.credentials, sbt.repository.config, sbt.override.build.repos=true. На Windows и Linux это одинаковое
требование. Готовые команды находятся в главах установки и в примере Linux pipeline.
Скрипты окружения в application/build/scripts создаются GSF CLI из шаблонов. Не храните ручные настройки только в
сгенерированном set_env.sh/set_env.cmd: последующий refresh или build формирует его заново.