feat(phase1): rebrand to TTRPG Player and drop Git updates feed
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>
This commit is contained in:
@@ -1,159 +1,38 @@
|
||||
# Ручная выкладка macOS-обновлений в публичный feed
|
||||
# Ручная выкладка macOS-обновлений (TTRPG Player)
|
||||
|
||||
Инструкция для случая, когда **сборка делается на вашем Mac вручную**, а файлы для `electron-updater` нужно **вручную** положить в публичный репозиторий обновлений.
|
||||
До настройки VPS (фаза 2) mac-сборка выполняется **локально на Mac**. Артефакты нужно будет положить на тот же HTTPS-origin, что и Win/Linux (`build.publish.url`).
|
||||
|
||||
Общая схема проекта: приватный репозиторий с кодом, публичный **`DndGamePlayerUpdates`**, ветка **`updates`**, URL feed как в `package.json`:
|
||||
|
||||
`https://git.mailib.ru/ifontosh/DndGamePlayerUpdates/raw/branch/updates/`
|
||||
|
||||
---
|
||||
|
||||
## 1. Что собрать на Mac
|
||||
|
||||
В каталоге проекта `dnd_player`:
|
||||
## Сборка на Mac
|
||||
|
||||
```bash
|
||||
cd /путь/к/dnd_player
|
||||
npm ci
|
||||
npm run build
|
||||
npm run pack:mac
|
||||
```
|
||||
|
||||
Сборка установщиков только под macOS (без публикации в сеть, только файлы в `release/`):
|
||||
В `release/` появятся, например:
|
||||
|
||||
- `TTRPGPlayer-<version>-x64.dmg` (и arm64 при универсальной сборке)
|
||||
- `latest-mac.yml` (если включена публикация generic при сборке)
|
||||
|
||||
Для локальной проверки updater можно временно указать URL:
|
||||
|
||||
```bash
|
||||
npx electron-builder --mac --publish never \
|
||||
--config.publish.provider=generic \
|
||||
--config.publish.url="https://git.mailib.ru/ifontosh/DndGamePlayerUpdates/raw/branch/updates/"
|
||||
--config.publish.url="https://YOUR-UPDATE-HOST/"
|
||||
```
|
||||
|
||||
**Важно:** значение `--config.publish.url=...` должно совпадать с `package.json` → `build.publish.url` (**со слэшем в конце**). Так внутри приложения и в `latest-mac.yml` будет корректный базовый URL для скачивания.
|
||||
(подставьте реальный origin со слэшем в конце)
|
||||
|
||||
После сборки откройте папку **`release/`** в корне проекта. Там должны быть, среди прочего:
|
||||
## Фаза 2: выкладка на статический хост
|
||||
|
||||
- **`latest-mac.yml`** — обязателен для `electron-updater` на Mac;
|
||||
- **`.dmg`** и/или **`.zip`** — то, на что ссылается `latest-mac.yml`;
|
||||
- при необходимости **`.blockmap`** (если electron-builder их создал) — заливайте с теми же именами, что указаны в `latest-mac.yml`.
|
||||
1. Скопировать на сервер обновлений:
|
||||
- `latest-mac.yml`
|
||||
- `.dmg` / `.zip` с именами, на которые ссылается yml
|
||||
2. Проверить в браузере: `https://YOUR-UPDATE-HOST/latest-mac.yml`
|
||||
3. В установленном приложении: **Настройки → Проверить обновления** (нужна активная лицензия).
|
||||
|
||||
Имена файлов зависят от версии и архитектур (в конфиге dmg и zip для **x64** и **arm64**). На Apple Silicon без дополнительных шагов часто получается только **arm64**; для отдельного Intel-сборщика нужна своя машина или параметры arch — ориентируйтесь на фактический список файлов в `release/`.
|
||||
## Устаревшая схема (Git feed)
|
||||
|
||||
---
|
||||
|
||||
## 2. Куда заливать
|
||||
|
||||
Файлы должны оказаться в **публичном** репозитории:
|
||||
|
||||
| Параметр | Значение |
|
||||
| ------------ | ------------------------------------------------------------------------- |
|
||||
| Репозиторий | `ifontosh/DndGamePlayerUpdates` (подставьте свой owner/repo, если другой) |
|
||||
| Ветка | `updates` |
|
||||
| Расположение | **корень ветки** (не подпапка) |
|
||||
|
||||
Проверка: в браузере должен открываться, например:
|
||||
|
||||
`https://git.mailib.ru/ifontosh/DndGamePlayerUpdates/raw/branch/updates/latest-mac.yml`
|
||||
|
||||
Файлы Windows (`latest.yml`, `.exe`, …), которые кладёт CI, должны **остаться** в том же корне. Вы **добавляете или обновляете** только macOS-артефакты и **`latest-mac.yml`**, не удаляя артефакты Windows (если не делаете осознанную зачистку старых версий).
|
||||
|
||||
---
|
||||
|
||||
## 3. Способ A — через `git` (удобно для больших dmg)
|
||||
|
||||
### 3.1. Клон и ветка `updates`
|
||||
|
||||
```bash
|
||||
cd ~/где-удобно
|
||||
git clone https://git.mailib.ru/ifontosh/DndGamePlayerUpdates.git
|
||||
cd DndGamePlayerUpdates
|
||||
git fetch origin
|
||||
git checkout updates
|
||||
```
|
||||
|
||||
Если ветки `updates` ещё нет:
|
||||
|
||||
```bash
|
||||
git checkout main
|
||||
git pull
|
||||
git checkout -b updates
|
||||
git push -u origin updates
|
||||
```
|
||||
|
||||
Дальше для каждой выкладки работайте в ветке **`updates`**.
|
||||
|
||||
### 3.2. Актуализировать локальную копию
|
||||
|
||||
```bash
|
||||
git checkout updates
|
||||
git pull origin updates
|
||||
```
|
||||
|
||||
### 3.3. Скопировать файлы из `release/` в корень клона
|
||||
|
||||
```bash
|
||||
cp /путь/к/dnd_player/release/latest-mac.yml .
|
||||
cp /путь/к/dnd_player/release/*.dmg .
|
||||
cp /путь/к/dnd_player/release/*.zip .
|
||||
# blockmap, если есть:
|
||||
cp /путь/к/dnd_player/release/*.blockmap . 2>/dev/null || true
|
||||
```
|
||||
|
||||
Проверка, что Windows-файлы на месте:
|
||||
|
||||
```bash
|
||||
ls -la
|
||||
```
|
||||
|
||||
### 3.4. Коммит и push
|
||||
|
||||
```bash
|
||||
git add latest-mac.yml *.dmg *.zip
|
||||
git add *.blockmap 2>/dev/null || true
|
||||
git status
|
||||
git commit -m "mac: DNDGamePlayer vX.Y.Z (ручная выкладка)"
|
||||
git push origin updates
|
||||
```
|
||||
|
||||
Для HTTPS обычно используют **персональный токен (PAT)** Gitea вместо пароля, либо настроенный **SSH** (`git@git.mailib.ru:ifontosh/DndGamePlayerUpdates.git`).
|
||||
|
||||
### 3.5. Проверка
|
||||
|
||||
- Откройте `latest-mac.yml` по raw-URL (см. выше).
|
||||
- Откройте в браузере прямую ссылку на один из `.dmg` из этого YAML — не должно быть 404.
|
||||
|
||||
---
|
||||
|
||||
## 4. Способ B — через веб-интерфейс Gitea
|
||||
|
||||
Подходит для редких правок; для больших **dmg** удобнее git.
|
||||
|
||||
1. Репозиторий `DndGamePlayerUpdates` → ветка **`updates`**.
|
||||
2. Загрузить или изменить **`latest-mac.yml`** и бинарники (**имена как в `release/`**).
|
||||
3. Не удалять при этом файлы Windows в корне, если они нужны для PC-обновлений.
|
||||
|
||||
---
|
||||
|
||||
## 5. Версии и Windows
|
||||
|
||||
- В **`latest-mac.yml`** и в именах файлов должна быть та **версия приложения**, которую вы отдаёте пользователям Mac (как в `package.json` на момент сборки).
|
||||
- **`latest.yml`** (Windows) и **`latest-mac.yml`** (Mac) — разные файлы; версии на платформах могут совпадать или нет. Каждая ОС читает свой YAML.
|
||||
|
||||
---
|
||||
|
||||
## 6. Подпись кода (кратко)
|
||||
|
||||
Без **Developer ID** и при необходимости **нотаризации** macOS может ограничивать запуск после скачивания. На процедуру «залить файлы в репо» это не влияет, но влияет на UX после автообновления. Для продакшена имеет смысл позже настроить `CSC_LINK`, `CSC_KEY_PASSWORD` и нотаризацию по [документации electron-builder](https://www.electron.build/).
|
||||
|
||||
---
|
||||
|
||||
## 7. Чеклист
|
||||
|
||||
1. Локально собрали Mac с `--publish never` и верным `publish.url`.
|
||||
2. В `release/` есть **`latest-mac.yml`** и все объекты, на которые он ссылается.
|
||||
3. В ветке **`updates`** в корне репозитория обновили/добавили эти файлы, не снеся Windows-артефакты без необходимости.
|
||||
4. Проверили raw-URL **`latest-mac.yml`** и ссылку на dmg.
|
||||
5. В **упакованном** приложении с **активной лицензией** сработает существующий `electron-updater` (задержка первой проверки и cooldown — см. `app/main/update/installAutoUpdater.ts`).
|
||||
|
||||
---
|
||||
|
||||
## Связанные документы
|
||||
|
||||
- Общая схема Gitea, секреты, раннер: [GITEA_AUTO_UPDATE.md](./GITEA_AUTO_UPDATE.md).
|
||||
Раньше файлы коммитили в репозиторий **`DndGamePlayerUpdates`**, ветка `updates`. Этот способ **больше не используется** — репозиторий можно удалить на Gitea.
|
||||
|
||||
Reference in New Issue
Block a user