docs: SoT product version EventHubSpec/VERSION + build in health.
MAJOR.MINOR from Spec; per-repo CI run_number as build; health exposes version/build/git_sha/built_at. Admin UI / API / UI labels documented in WORKFLOW. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
+39
-16
@@ -191,34 +191,57 @@ Issue: https://git.sabilin.com/EventHub/EventHubBack/issues/24
|
||||
|
||||
## 6. Версии и деплой (IFT / stage)
|
||||
|
||||
### Product version (`VERSION`)
|
||||
### Product version (`EventHubSpec/VERSION`)
|
||||
|
||||
В корне `EventHubBack` и `EventHubFrontAdmin` лежит файл **`VERSION`** в формате **`MAJOR.MINOR`** (сейчас `0.1`).
|
||||
Единый источник правды: **`EventHubSpec/VERSION`** — формат **`MAJOR.MINOR`** (сейчас `0.1`).
|
||||
|
||||
- Бампается **вручную и редко** (релиз продуктовой линейки), не на каждый push.
|
||||
- Patch-уровень SemVer **не** используется для stage-деплоев.
|
||||
- Ручные git-теги `v*` для выкладки на stage **не** нужны.
|
||||
- Бампается **вручную и редко** (смена продуктовой линейки).
|
||||
- В `EventHubBack` / `EventHubFrontAdmin` (и будущем client UI) файл `VERSION` — только **fallback** для локальных сборок без доступа к Spec.
|
||||
- CI на push/PR **читает Spec** (`scripts/resolve-product-version.sh`), не локальный файл (если Spec доступен).
|
||||
|
||||
### Идентичность сборки
|
||||
### Build number
|
||||
|
||||
| Поле | Откуда | Назначение |
|
||||
|------|--------|------------|
|
||||
| product version | `VERSION` | «линейка» продукта |
|
||||
| git sha | `GITHUB_SHA` (12 символов) | точная сборка |
|
||||
| built_at | время CI UTC | диагностика |
|
||||
| Поле | Откуда | Одинаково между репо? |
|
||||
|------|--------|------------------------|
|
||||
| `version` (`MAJOR.MINOR`) | `EventHubSpec/VERSION` | **да** |
|
||||
| `build` | `GITHUB_RUN_NUMBER` workflow CI | **нет** (у каждого репо свой счётчик) |
|
||||
| `git_sha` | `GITHUB_SHA` (12 символов) | нет |
|
||||
| `built_at` | время CI UTC | нет |
|
||||
|
||||
- **FrontAdmin:** bake в Vite (`VITE_APP_VERSION`, `VITE_GIT_SHA`, `VITE_BUILT_AT`) на шаге CI.
|
||||
- **Back:** bake в Docker image (`EVENTHUB_VERSION`, `EVENTHUB_GIT_SHA`, `EVENTHUB_BUILT_AT`) → `GET /admin/health` и `GET /v1/admin/health` (`version`, `git_sha`, `built_at`).
|
||||
- В UI (меню профиля): `Admin 0.1 (sha)` + `API 0.1 (sha)`.
|
||||
### Идентичность сборки (health / UI)
|
||||
|
||||
**API** (`GET /health`, `GET /admin/health`, `GET /v1/admin/health`):
|
||||
|
||||
```json
|
||||
{
|
||||
"status": "ok",
|
||||
"service": "eventhub",
|
||||
"version": "0.1",
|
||||
"build": 338,
|
||||
"git_sha": "2b65a804d354",
|
||||
"built_at": "2026-07-17T18:00:00Z"
|
||||
}
|
||||
```
|
||||
|
||||
- **Back:** bake `EVENTHUB_VERSION`, `EVENTHUB_BUILD`, `EVENTHUB_GIT_SHA`, `EVENTHUB_BUILT_AT`.
|
||||
- **Admin UI:** bake `VITE_APP_VERSION`, `VITE_APP_BUILD`, `VITE_GIT_SHA`, `VITE_BUILT_AT`.
|
||||
- **Client UI (будущее):** те же `VITE_APP_*`, лейбл компонента — `UI`.
|
||||
|
||||
Отображение в Admin UI (меню профиля):
|
||||
|
||||
- `Admin UI 0.1.341 (eb37476)`
|
||||
- `API 0.1.338 (2b65a804d354)`
|
||||
|
||||
Третье число в лейбле — **build**, не semver-patch релиза.
|
||||
|
||||
### Registry / окружения
|
||||
|
||||
| Окружение | Тег образа | Когда |
|
||||
|-----------|------------|--------|
|
||||
| IFT / push CI | `sha-<12>` + floating `:ift` / `:dev` | после зелёного CI |
|
||||
| Stage | тот же `sha-<12>` + floating `:stage` | auto после успешного CI на `master` (`deploy-stage.yml` → promote + SSH deploy) |
|
||||
| Stage | тот же `sha-<12>` + floating `:stage` | auto после успешного CI на `master` |
|
||||
|
||||
IFT и stage крутят **одну и ту же** сборку `sha-*`. Product version из `VERSION` на деплой не влияет.
|
||||
IFT и stage крутят **одну и ту же** сборку `sha-*`. Product version / build на выбор тега деплоя не влияют.
|
||||
|
||||
### E2E Admin UI (Playwright)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user