Проекты и версии
Модель
| Сущность | Что это |
|---|---|
| Проект (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, и вы видите, что трогала автоматизация.