7c858ba633
Rename product to TTRPG Player (TTRPGPlayer / com.ttrpgplayer.app), use .ttrpg.zip for new saves while keeping .dnd.zip import, accept TTRPG- and DND- license keys on client, and remove sync-update-feed plus CI push to DndGamePlayerUpdates. Co-authored-by: Cursor <cursoragent@cursor.com>
53 lines
4.2 KiB
Markdown
53 lines
4.2 KiB
Markdown
# Автообновления TTRPG Player
|
||
|
||
## Текущее состояние (фаза 1)
|
||
|
||
- Продукт переименован в **TTRPG Player** / **НРИ Плеер** (`productName`: `TTRPGPlayer`, `appId`: `com.ttrpgplayer.app`).
|
||
- CI по тегу `v*` **только собирает** установщики в каталог `release/` (Win NSIS, Linux AppImage x64/arm64). Пуш в Git-репозиторий **`DndGamePlayerUpdates`** **отключён**; скрипт `scripts/sync-update-feed.mjs` удалён.
|
||
- В `package.json` → `build.publish.url` стоит заглушка `https://updates.invalid.ttrpg/` до настройки реального хоста.
|
||
- Секреты **`DND_UPDATE_FEED_URL`**, **`DND_UPDATES_SERVER`**, **`UPDATES_REPO`**, **`DND_UPDATES_PUSH_TOKEN`** в workflow **больше не используются** — их можно удалить из настроек репозитория.
|
||
- Публичный репозиторий **`DndGamePlayerUpdates` на Gitea можно удалить** (история с бинарниками ~4 GiB больше не нужна).
|
||
|
||
Клиент по-прежнему использует **electron-updater** (generic provider). Пока URL заглушка, проверка обновлений в установленной сборке завершится ошибкой сети — это ожидаемо до фазы 2.
|
||
|
||
## Фаза 2 (план): статический VPS
|
||
|
||
Цель: один HTTPS- origin без Git LFS и без роста репозитория.
|
||
|
||
1. VPS с **nginx** (или аналог), TLS (Let's Encrypt).
|
||
2. Каталог, например `/var/www/ttrpg-updates/`, с **фиксированными именами** файлов (без версии в имени установщика) или с semver в `latest*.yml` и прямыми URL на те же имена.
|
||
3. CI или ручной шаг: **rsync/scp** артефактов из `release/` на сервер после тега `v*`.
|
||
4. В приватном репозитории кода — секрет **`TTRPG_UPDATE_FEED_URL`** (со слэшем в конце), подстановка в `electron-builder` при сборке релиза.
|
||
5. Mac: ручная выкладка `.dmg` / `latest-mac.yml` на тот же origin (см. `docs/MANUAL_MAC_UPDATE_UPLOAD.md`).
|
||
|
||
Детали CI для VPS будут добавлены отдельным PR после выбора хоста и схемы имён файлов.
|
||
|
||
## Локальная сборка релиза
|
||
|
||
```bash
|
||
npm run pack # Win (на Windows) или см. CI
|
||
npm run pack:linux # Linux AppImage
|
||
npm run pack:mac # macOS (на Mac)
|
||
npm run release:info # версия и пример тега vX.Y.Z
|
||
```
|
||
|
||
Артефакты: `TTRPGPlayer-Setup-<version>.exe`, `TTRPGPlayer-<version>-<arch>.AppImage`, и т.д. (см. `package.json` → `build`).
|
||
|
||
## Gitea Actions (act_runner)
|
||
|
||
- Workflow: `.gitea/workflows/release.yml`
|
||
- Триггер: push тега `v*`
|
||
- Runner label: `ubuntu-22.04` (как в настройках раннера)
|
||
|
||
Если job падает на Wine/NSIS — см. комментарии в workflow (сборка Win на Linux без i386).
|
||
|
||
## Лицензия и обновления
|
||
|
||
Проверка обновлений доступна только при **активной лицензии** (как и раньше). Продуктовые ключи на клиенте: **`TTRPG-…`** и устаревшие **`DND-…`**; новые ключи выдаёт сервер лицензий (отдельный репозиторий `DndGamePlayerLicenseServer` — смена префикса на сервере вне этого PR).
|
||
|
||
## Устаревшая схема (не использовать)
|
||
|
||
Раньше артефакты пушились в публичный Git **`DndGamePlayerUpdates`**, ветка `updates`, URL вида
|
||
`https://git.mailib.ru/.../DndGamePlayerUpdates/raw/branch/updates/`.
|
||
Эта схема приводила к раздуванию репозитория, конфликтам merge, ENOSPC на раннере и HTTP 500 при `git push`. Она **снята с поддержки**.
|