1. Backend и база
- Создайте backup production-базы.
- Примените проверенные миграции.
- Разверните backend/frontend.
- Проверьте OAuth, Authlib и S3 health flow.
2. Игровая сборка
- Подготовьте чистый каталог клиента.
- Запустите Manifest Builder.
- Создайте/обновите
profile.json.
- Увеличьте
release.generation и задайте новый неизменяемый release.id.
- Запустите
wraithbound-publisher publish: он загрузит files, JSON manifest и signed envelope в S3.
- Publisher установит envelope через приватный admin gRPC только после успешной S3-транзакции. Прямой доступ CI к volume или каталогу launcher-server не используется.
- Вызовите
PublishBuild с выбранными buildId и releaseId. Control-plane повторно проверит подпись и сам обновит активный указатель.
- Войдите тестовым аккаунтом и выполните полную подготовку клиента.
- Повторите запуск:
update должен скачаться снова, updateVerify — остаться valid.
3. Native
Соберите и протестируйте все изменённые Rust-модули. Скопируйте release binaries в launcher resources до Electron build.
4. Launcher
- Увеличьте версию.
- Экспортируйте
WB_LAUNCHER_TRUSTED_KEYS_FILE с публичным registry текущих
active/retiring ключей. При необходимости передайте WB_HAWK_TOKEN через
secret-хранилище CI.
- Выполните typecheck, lint и build.
build:win/release:win сами проверят
наличие trust registry до упаковки.
- Проверьте unpacked artifact и подпись полученного manifest envelope.
- Опубликуйте release в
Wraithbound-Development/launcherRelease.
- Убедитесь, что release содержит
latest.yml, installer и blockmap.
- Проверьте auto-update с предыдущей версии.
Не обновляйте profile/manifest неатомарно во время активной раздачи. Сначала загрузите files, затем manifest, последним — profile или version pointer.