ADR-012: именованные сборки (zip) рядом с номерными — /sol/; ^~ для служебных путей; два дефекта сборки фронтендера

This commit is contained in:
Porfiry
2026-09-15 19:29:54 +03:00
parent d66c5f8893
commit b9799bf091
5 changed files with 175 additions and 17 deletions
+26
View File
@@ -81,3 +81,29 @@ supported on this GPU` и Unity-исключение из wasm. **Это арт
⚠️ `publish-release.sh` содержит креды реестра (`subochev:…`) в открытом виде — файл живёт только
внутри LXC 152 как root (`/opt/game/tools/`), в git лежит шаблон из репы ops. Не тиражировать наружу.
## Именованные сборки (zip от фронтендера) — рядом с номерными
Кроме номерных релизов из CI (`/opt/game/releases/<N>/`) на nginx можно положить **именованную**
сборку — готовый zip от фронтендера, вне релизного цикла:
```bash
# zip сначала доставить на LXC 152 (через хост проксмокса):
scp build.zip root@192.168.76.66:/tmp/build.zip
ssh root@192.168.76.66 "pct push 152 /tmp/build.zip /tmp/build.zip"
# разложить под именем:
ssh root@192.168.76.66 "pct exec 152 -- /opt/game/tools/publish-zip.sh sol /tmp/build.zip"
```
Адрес: **`https://smart-updown.binom.pw/sol/`**. Активную сборку такая публикация **не трогает** —
корень по-прежнему редиректит на текущий номер.
**Питфоллы именованных сборок:**
- Служебные location обязаны иметь **`^~`** (`^~ /api`, `^~ /ws`, `^~ /solana-rpc/`). Regex-локейшн
сборок `^/(?<build>[a-zA-Z0-9][a-zA-Z0-9_-]*)…` иначе перехватит `/api/...` как «сборку с именем
api» — regex в nginx приоритетнее обычного префикса. Без `^~` API ломается (проверено).
- `immutable` — **только для номерных** каталогов (`~^/[0-9]+/…`). Именованную папку могут перезалить
тем же именем → её ассеты кэшировать нельзя.
- Сборки фронтендера бывают на `.unityweb`-ассетах (`Build.wasm.unityweb` и т.п.) — расширение
`unityweb` в маске кэша учтено.
- Имя папки не должно совпадать со служебным путём (`api`, `ws`, `solana-rpc`) — скрипт это проверяет.