Концепции

Проекты и версии

Базовые сущности Veresk и то, как версии наследуют файлы друг от друга.

Модель

СущностьЧто это
Проект (project)Контейнер верхнего уровня. Имя, alias, владелец и собственное место на CDN.
Версия (version)Именованная линия файлов проекта, например default или staging.
Файл (file)Файл конфигурации: json, lua, txt, css или scss.
Потребитель (consumer)Клиент, получающий конфиги (сборка игры, бэкенд-сервис).
Тег (tag)Произвольная метка для группировки и фильтрации файлов.
Бандл (bundle)Именованный набор файлов, которые выдаются вместе. Состав задаётся отдельно для каждой версии.

Проекты создаются в веб-интерфейсе Veresk. Версии, файлы, теги и публикация доступны также через REST API и MCP. Потребители, бандлы, шифрование и Git настраиваются в интерфейсе.

Версии образуют цепочку

У каждого проекта есть корневая версия default. Новая версия создаётся от родителя (по умолчанию — от default) и наследует все файлы родителя.

  • Версия без собственной копии файла отдаёт содержимое родителя.
  • Когда вы меняете файл в версии, у неё появляется собственная копия, и этот файл она больше не наследует. Остальные файлы продолжают наследоваться.
  • Файл можно сбросить, и он снова будет наследоваться от родителя.
default      settings.json   prices.json   events.lua
  └─ staging settings.json*  (наследует prices.json, events.lua)
       └─ season-5  events.lua*  (остальное наследует от staging)

* — у файла есть собственная копия в этой версии.

Так небольшие изменения обходятся дёшево: создайте staging, правьте один файл и публикуйте, не дублируя весь проект.

Блокировка

Версию можно заблокировать. Заблокированная версия доступна только для чтения: файлы править нельзя. Используйте это, чтобы зафиксировать выпущенное.

Сравнение и перенос

Две версии можно сравнить по файлам. Каждый файл same, different или присутствует только с одной стороны. Выбранные файлы можно скопировать из одной версии в другую, например, чтобы перенести проверенные изменения из staging в default.

Потребители

Потребитель определяет, какие файлы получает клиент. Файл попадает к потребителю, только если назначен ему. Клиент указывает потребителя по имени, поэтому backend и game-client могут получать из одной версии разные наборы файлов.

Теги

Теги помогают находить файлы в длинном списке. Файлы, созданные или изменённые через API, автоматически получают теги api-created и api-edited, и вы видите, что трогала автоматизация.