chore(deploy): mappa v0.29.0 (4e013bd) — issue/entity-version/attachment-E2 + gotcha upload-boundary
This commit is contained in:
@@ -22,7 +22,7 @@ mappa (#985). Не делать чужую часть.
|
|||||||
- **Образ:** `registry.kzntsv.site/mappa:<version>` — тег = version из package.json, GIT_SHA передаётся
|
- **Образ:** `registry.kzntsv.site/mappa:<version>` — тег = version из package.json, GIT_SHA передаётся
|
||||||
`--build-arg GIT_SHA=<sha>` (Dockerfile в корне репо, multi-stage node:22-alpine;
|
`--build-arg GIT_SHA=<sha>` (Dockerfile в корне репо, multi-stage node:22-alpine;
|
||||||
**обязательный COPY `src/lib/schema.sql` → `dist/src/lib/schema.sql`** — tsc не копирует .sql,
|
**обязательный COPY `src/lib/schema.sql` → `dist/src/lib/schema.sql`** — tsc не копирует .sql,
|
||||||
без него migrate() падает «schema.sql not found»). Прод на 2026-08-28 = **v0.28.0** (GIT_SHA f1ba4e9).
|
без него migrate() падает «schema.sql not found»). Прод на 2026-08-28 = **v0.29.0** (GIT_SHA 4e013bd).
|
||||||
Deploy-паттерн: релизная ветка `deploy/vX.Y.Z` из батч-tip → бамп package.json → merge в master.
|
Deploy-паттерн: релизная ветка `deploy/vX.Y.Z` из батч-tip → бамп package.json → merge в master.
|
||||||
- **Стек Portainer:** `mappa` (Id 27, endpoint 1). Source-of-truth compose:
|
- **Стек Portainer:** `mappa` (Id 27, endpoint 1). Source-of-truth compose:
|
||||||
`admin/host-stacks/vds-kzntsv/mappa.compose.yml`.
|
`admin/host-stacks/vds-kzntsv/mappa.compose.yml`.
|
||||||
@@ -112,3 +112,14 @@ ssh vds.kzntsv.site 'docker ps --filter name=mappa --format "{{.Status}}"'
|
|||||||
миграция создаёт PG-конфиг `mappa` (гейт newly_created) и перестраивает tsvec ВСЕХ сущностей
|
миграция создаёт PG-конфиг `mappa` (гейт newly_created) и перестраивает tsvec ВСЕХ сущностей
|
||||||
(~13.5k коммитов). Старт после деплоя дольше обычного; health может отвечать 404/не стартовать
|
(~13.5k коммитов). Старт после деплоя дольше обычного; health может отвечать 404/не стартовать
|
||||||
до ~1 мин — это ожидаемо, не паника. Проверять `docker ps` (health: starting) + повторять /health.
|
до ~1 мин — это ожидаемо, не паника. Проверять `docker ps` (health: starting) + повторять /health.
|
||||||
|
9. **attachment upload: boundary регистрозависим, content-type lowercases (v0.29.0, 2026-08-28)** —
|
||||||
|
сервер приводит content-type к lowercase (`ct.toLowerCase()`), а boundary в multipart —
|
||||||
|
регистрозависим (RFC 2046). Клиент с boundary, содержащим ЗАГЛАВНЫЕ (напр. `----LV0290`),
|
||||||
|
получает 400 «file field required»: delimiter не матчится. Рабочий вариант — lowercase-boundary
|
||||||
|
(`----lv0290`). Плюс: curl на Windows (mingw) шлёт multipart с LF-разделителями — серверный
|
||||||
|
парсер ждёт CRLF; надёжно — собрать multipart с CRLF вручную (`--data-binary`). Кандидат на
|
||||||
|
фикс в mappa: не lowercasing'ить boundary / матчить регистронезависимо.
|
||||||
|
8. **Одноразовый ре-индекс tsvec при создании конфига токенизатора (v0.28.0, 2026-08-28)** —
|
||||||
|
миграция создаёт PG-конфиг `mappa` (гейт newly_created) и перестраивает tsvec ВСЕХ сущностей
|
||||||
|
(~13.5k коммитов). Старт после деплоя дольше обычного; health может отвечать 404/не стартовать
|
||||||
|
до ~1 мин — это ожидаемо, не паника. Проверять `docker ps` (health: starting) + повторять /health.
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
services:
|
services:
|
||||||
mappa:
|
mappa:
|
||||||
image: registry.kzntsv.site/mappa:v0.28.0
|
image: registry.kzntsv.site/mappa:v0.29.0
|
||||||
container_name: mappa
|
container_name: mappa
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
mem_limit: 512m
|
mem_limit: 512m
|
||||||
|
|||||||
Reference in New Issue
Block a user