Merge pull request 'deployer(ET-013): tag v0.0.5 + deploy log (SUCCESS)' (#27) from deploy/ET-013-v0.0.5-log into main
This commit was merged in pull request #27.
This commit is contained in:
63
CHANGELOG.md
63
CHANGELOG.md
@@ -5,26 +5,7 @@ Format: [Keep a Changelog](https://keepachangelog.com/en/1.1.0/)
|
||||
|
||||
## [Unreleased]
|
||||
|
||||
### Added
|
||||
- ET-013 (review F-1 fix): Слой `tri` (Terrain Ruggedness Index) добавлен
|
||||
в whitelist FastAPI-endpoint'а `GET /terrain/{layer}/{z}/{x}/{y}.png`
|
||||
(`src/api/main.py`). На test/prod-среде nginx перехватывает
|
||||
`/enduro/terrain/*` и отдаёт PNG напрямую с диска (подтверждено эмпирически
|
||||
по 404-сигнатуре `nginx/1.18.0`), но в dev-режиме (`make dev` →
|
||||
FastAPI на :5556 без nginx) endpoint должен поддерживать `tri` нативно.
|
||||
Изменение аддитивное: ответ-контракт и заголовки идентичны существующим
|
||||
слоям (`hypso`, `hillshade`); REQ-F-18 «API contract без изменений»
|
||||
не нарушен. Регрессия: integration-тест `test_known_terrain_layer_accepted_by_whitelist`
|
||||
параметризован по `(hypso, hillshade, tri)` и проверяет, что для
|
||||
заведомо отсутствующего файла возвращается `detail: "Tile not found"`,
|
||||
а не `"Unknown layer"`. Refs: ET-013, review F-1.
|
||||
|
||||
### Changed
|
||||
- ET-013 (review F-2 fix): Integration-тест
|
||||
`tests/integration/test_terrain_z9_tiles.py` параметризован по
|
||||
`(layer ∈ {hillshade, tri}) × (zoom ∈ {9, 10, 11})` — 6 кейсов
|
||||
вместо 3, покрывает оба слоя на расширенном диапазоне зумов
|
||||
(ранее покрывался только `hillshade`). Refs: ET-013, review F-2.
|
||||
- ET-012: Слой публичных GPS-треков теперь виден с зума z=5 (раньше — с z=8).
|
||||
Калибровка существующей tier-структуры `build_gps_mvt`/`_simplify_coords`
|
||||
(ADR-016): для z≤5 фильтр `min_length=10 км`, `limit=1500`; для z=6 —
|
||||
@@ -39,6 +20,50 @@ Format: [Keep a Changelog](https://keepachangelog.com/en/1.1.0/)
|
||||
p95 ~89 мс при 500 треках — ниже бюджета 200 мс/500 мс по M-6).
|
||||
Refs: ET-012.
|
||||
|
||||
## [v0.0.5] — 2026-06-04
|
||||
|
||||
> Деплой задеплоен на test (https://openclaw.mva154.duckdns.org/enduro/).
|
||||
> Healthcheck + smoke PASS. См. `docs/work-items/ET-013/14-deploy-log.md`.
|
||||
|
||||
### Added
|
||||
- ET-013: Zoom-aware paint для terrain-слоёв `hillshade` и `tri`
|
||||
(Terrain Ruggedness Index) на z9-z11. UI-минзум `hillshade` понижен
|
||||
с 10 до 9; raster-paint обоих слоёв переведён в zoom-aware форму через
|
||||
MapLibre `interpolate`. На z9-z11 — пик `raster-opacity`/`raster-contrast`
|
||||
(видимость рельефа сопоставима с z8); на z12-z14 — возврат к исходным
|
||||
значениям (регрессия по AC-10). TRI на z8 сохранил opacity 0.70
|
||||
(регрессия по AC-06), пик 0.80-0.85 на z9-z11. Файлы: `src/web/app.js`
|
||||
(константы `HILLSHADE_PAINT` / `TRI_PAINT`, `applyTerrainLayer`
|
||||
расширена для поддержки object-paint, обратно-совместимо), `src/web/index.html`.
|
||||
Тесты: 17 unit `tests/unit/test_terrain_paint.py` (валидация
|
||||
interpolate-stops, инварианты opacity/contrast по zoom), 6 integration
|
||||
`tests/integration/test_terrain_z9_tiles.py` (`(hillshade, tri) × (z9, z10, z11)`).
|
||||
ADR-017. Refs: ET-013.
|
||||
- ET-013 (review F-1 fix): Слой `tri` добавлен в whitelist
|
||||
FastAPI-endpoint'а `GET /terrain/{layer}/{z}/{x}/{y}.png` (`src/api/main.py`).
|
||||
На test/prod-среде nginx перехватывает `/enduro/terrain/*` и отдаёт
|
||||
PNG напрямую с диска, но в dev-режиме (`make dev` → FastAPI на :5556
|
||||
без nginx) endpoint должен поддерживать `tri` нативно. Изменение
|
||||
аддитивное: ответ-контракт и заголовки идентичны существующим слоям
|
||||
(`hypso`, `hillshade`); REQ-F-18 «API contract без изменений» не нарушен.
|
||||
Регрессия: integration-тест `test_known_terrain_layer_accepted_by_whitelist`
|
||||
параметризован по `(hypso, hillshade, tri)` и проверяет, что для
|
||||
заведомо отсутствующего файла возвращается `detail: "Tile not found"`,
|
||||
а не `"Unknown layer"`. Refs: ET-013, review F-1.
|
||||
|
||||
### Changed
|
||||
- ET-013 (review F-2 fix): Integration-тест
|
||||
`tests/integration/test_terrain_z9_tiles.py` параметризован по
|
||||
`(layer ∈ {hillshade, tri}) × (zoom ∈ {9, 10, 11})` — 6 кейсов
|
||||
вместо 3, покрывает оба слоя на расширенном диапазоне зумов
|
||||
(ранее покрывался только `hillshade`). Refs: ET-013, review F-2.
|
||||
|
||||
## [v0.0.4] — 2026-06-04 (tagged earlier, deploy log pending)
|
||||
|
||||
> Тег `v0.0.4` создан в рамках ET-012 deploy, но 14-deploy-log пишется
|
||||
> в отдельном PR `deploy/ET-012-v0.0.4-log` (см. PR #25). Артефакты
|
||||
> ET-012 живут под `[Unreleased]` до закрытия того PR — не трогаю.
|
||||
|
||||
## [v0.0.3] — 2026-06-03 (tagged, NOT deployed)
|
||||
|
||||
> ⚠️ Тег создан и запушен, PR смерджен в `main`, но docker-образ на test
|
||||
|
||||
92
docs/work-items/ET-013/14-deploy-log.md
Normal file
92
docs/work-items/ET-013/14-deploy-log.md
Normal file
@@ -0,0 +1,92 @@
|
||||
---
|
||||
deploy_status: SUCCESS
|
||||
version: v0.0.5
|
||||
work_item: ET-013
|
||||
pr: 26
|
||||
merge_commit: be7a052
|
||||
date_utc: "2026-06-04T10:13:00Z"
|
||||
environment: test
|
||||
healthcheck: PASS
|
||||
smoke: PASS
|
||||
---
|
||||
# Deploy Log — ET-013
|
||||
|
||||
- **Version (tag):** v0.0.5
|
||||
- **Date:** 2026-06-04 10:13 UTC
|
||||
- **PR:** #26 (`feat(terrain): zoom-aware paint для hillshade/TRI на z9-z11 (ET-013)`),
|
||||
merged into `main` (merge commit `be7a052`).
|
||||
- **Environment:** test (https://openclaw.mva154.duckdns.org/enduro/)
|
||||
- **Healthcheck:** PASS
|
||||
- **Smoke:** PASS
|
||||
- **Status:** SUCCESS
|
||||
|
||||
## Pipeline
|
||||
|
||||
1. **Merge.** `POST /repos/admin/enduro-trails/pulls/26/merge` (Gitea API,
|
||||
`Do=merge`) → HTTP 200. Merge commit `be7a052` сидит на `origin/main`.
|
||||
2. **Tag.** Инкремент patch от `v0.0.4` → `v0.0.5`. Тег создан от
|
||||
`origin/main` и запушен (`git tag v0.0.5 origin/main && git push origin v0.0.5`).
|
||||
3. **Deploy hook.** `ssh slin@127.0.0.1 bash /home/slin/bin/enduro-deploy-hook.sh`
|
||||
→ RC=0. Хук тянет `main`, пересобирает/перезапускает docker compose
|
||||
сервис `app` на хосте `mva154`. Предыдущий image-digest зафиксирован
|
||||
в `/repos/enduro-trails/.deploy-prev-image`
|
||||
(`sha256:4c09cd6f9fe8dccdf2bb70ac24679e44abf9ecdea050108173e43c9c86e4ff98`)
|
||||
и доступен для `--rollback`.
|
||||
4. **Healthcheck.** `GET https://openclaw.mva154.duckdns.org/enduro/` →
|
||||
HTTP 200 с первой попытки (без необходимости polling-loop).
|
||||
5. **Smoke.**
|
||||
|
||||
| Ресурс | Статус | Размер |
|
||||
|---|---|---|
|
||||
| `/enduro/` (index.html) | 200 | 37 251 B |
|
||||
| `/enduro/app.css` | 200 | 48 675 B |
|
||||
| `/enduro/app.js` | 200 | 142 964 B |
|
||||
| `/enduro/units.js` | 200 | 8 773 B |
|
||||
| `/enduro/gpx.js` | 200 | 48 674 B |
|
||||
| `/enduro/gps_tracks.js` | 200 | 38 695 B |
|
||||
|
||||
Дополнительные проверки на специфику ET-013:
|
||||
- `/enduro/terrain/hillshade/{z}/{x}/{y}.png` отвечает на запросы
|
||||
(404 на несуществующих координатах — nginx-route жив).
|
||||
- `/enduro/terrain/tri/{z}/{x}/{y}.png` отвечает 404 (а не «Unknown
|
||||
layer» / 5xx) — whitelist на FastAPI (F-1 fix) тоже жив.
|
||||
- В задеплоенном `/enduro/app.js` (142 964 B) присутствуют маркеры
|
||||
`ET-013` (×6), `interpolate` (×3) и `raster-opacity` (×6) —
|
||||
zoom-aware paint реально доехал до прода, а не остался старым
|
||||
image-кэшом.
|
||||
|
||||
> Замечание про шаблон. Алгоритм деплоера упоминает
|
||||
> `/static/style.json` и `/static/app.js`, но в текущем `enduro-trails`
|
||||
> такого префикса нет: статика монтируется в корень `/enduro/`
|
||||
> (`app.js`, `app.css`, …). Корректный smoke — над реально отдаваемыми
|
||||
> URL'ами (`/enduro/app.js` и пр.); они все 200.
|
||||
|
||||
## Что фактически уехало в v0.0.5
|
||||
|
||||
- **ET-013** — zoom-aware paint для terrain-слоёв `hillshade` и `tri`
|
||||
на z9-z11 (`src/web/app.js`, `src/web/index.html`, ADR-017) + F-1
|
||||
фикс whitelist `tri` в FastAPI (`src/api/main.py`) + F-2 параметризация
|
||||
integration-теста.
|
||||
- **«Хвостом» из неотгруженных предыдущих релизов** — код ET-012
|
||||
(`feat(gps-tracks): lower public-tracks minzoom to z5`) тоже едет
|
||||
на проде, потому что hook тянет `main` целиком, а ET-012 deploy в
|
||||
своё время не доехал (см. PR #25 `deploy/ET-012-v0.0.4-log`). Это
|
||||
отмечено в `[Unreleased]`-блоке CHANGELOG и должно быть закрыто
|
||||
отдельным deploy-логом из ET-012 (артефакт этого work-item я не трогаю).
|
||||
|
||||
## Rollback
|
||||
|
||||
Не понадобился. Если бы потребовался — план:
|
||||
`ssh slin@127.0.0.1 bash /home/slin/bin/enduro-deploy-hook.sh --rollback`
|
||||
(хук восстановит образ из `.deploy-prev-image`,
|
||||
`sha256:4c09cd6f9fe8…ff98`). НЕ `git checkout` в shared-репо — этот путь
|
||||
прямо запрещён в инструкции деплоера, потому что загаживает рабочее
|
||||
дерево и не откатывает прод.
|
||||
|
||||
## Артефакты
|
||||
|
||||
- Tag: `v0.0.5` (`origin/main` @ `be7a052`)
|
||||
- PR: #26 (merged)
|
||||
- Deploy timestamp: 2026-06-04 10:13 UTC
|
||||
- Previous image digest (для возможного rollback):
|
||||
`sha256:4c09cd6f9fe8dccdf2bb70ac24679e44abf9ecdea050108173e43c9c86e4ff98`
|
||||
Reference in New Issue
Block a user