docs(history): UUID-регистр — процедура релиза и карта точек нормализации
Перенесено из служебной памяти VS Code в файл репозитория: - пошаговая процедура релиза dev (VERSION → 03 → curl-проверка → VERSIONS.md → dev-materialize), включая, что доки в реестр не публиковались; - карта: нормализация нужна в двух местах (сравнение и отправка BuildJSON), перечень функций и правила (lower() — костыль; план целиком не нормализуем).
This commit is contained in:
@@ -78,6 +78,47 @@ create / modify / redeploy (19 сгенерированных ресурсов,
|
|||||||
`DEV_STAND/FullPipe/shturval.tf1:123` передают `nubes_vc_vdc.vdc.id` /
|
`DEV_STAND/FullPipe/shturval.tf1:123` передают `nubes_vc_vdc.vdc.id` /
|
||||||
`nubes_vc_nsxt.edge.id` напрямую → на create у них тот же риск.
|
`nubes_vc_nsxt.edge.id` напрямую → на create у них тот же риск.
|
||||||
|
|
||||||
|
## Процедура релиза (dev) — воспроизводимо (проверено 30.09.2026)
|
||||||
|
|
||||||
|
1. Поднять `VERSION` в `TOOLS/config/dev/profile.env` и закоммитить
|
||||||
|
(иначе доки генерируются со старой версией).
|
||||||
|
2. Собрать и залить:
|
||||||
|
```bash
|
||||||
|
./TOOLS/scripts/03_build_and_upload_provider.sh --profile TOOLS/config/dev 2.0.24
|
||||||
|
```
|
||||||
|
Скрипт сам выполняет шаги `01` + `02`, собирает 3 платформы
|
||||||
|
(linux/windows/darwin amd64), подписывает GPG и заливает в S3.
|
||||||
|
3. Проверить публикацию:
|
||||||
|
```bash
|
||||||
|
curl -s https://tf-registry.containerk8s.services.ngcloud.ru/v1/providers/nubes-dev/nubes/versions
|
||||||
|
```
|
||||||
|
4. Обновить `VERSIONS.md` и закоммитить.
|
||||||
|
5. Для локального `go build`/`go test`: `02_generate_resources_and_docs_v2.sh --profile TOOLS/config/dev`
|
||||||
|
и `TOOLS/scripts/dev-materialize.sh dev` (эфемерная копия в `provider/`).
|
||||||
|
|
||||||
|
⚠️ Доки в реестр (шаг `04_build_and_publish_docs.sh`) в этом релизе **не публиковались**.
|
||||||
|
|
||||||
|
## Где нормализация нужна (карта, чтобы не потерять)
|
||||||
|
|
||||||
|
Нормализация регистра UUID нужна в **двух независимых местах**:
|
||||||
|
|
||||||
|
1. **Сравнение** (план ↔ state, adopt, suspend/resume, modifier-compare, диагностика):
|
||||||
|
`jsonutil.LowercaseUUIDsInText` → `JSONStringsEquivalent`, `JsonNormalize()`,
|
||||||
|
`ParamsMatchForResume`, `normalizeCompareValue`.
|
||||||
|
2. **Отправка в API** — единственная точка `resources_core.BuildJSON`
|
||||||
|
(`provider/internal/resources_core/helpers.go`), вызывается сгенерированным кодом
|
||||||
|
через `NestedJSONExpr` (`TOOLS/resource-generator/internal/templates/instance.go`:
|
||||||
|
Create ~302, Modify ~488, Redeploy ~505).
|
||||||
|
|
||||||
|
Правила:
|
||||||
|
|
||||||
|
- ⛔ `lower(...)` в HCL — костыль, а не решение (был нужен только из-за ненормализованной отправки).
|
||||||
|
- ⛔ Не нормализовать план целиком (скаляры→строки, сортировка ключей) — вечный diff;
|
||||||
|
менять только регистр UUID-подстрок.
|
||||||
|
- `resolveRefSvcParamValues` (`core/refsvc.go`) покрывает только top-level `refSvcId`
|
||||||
|
и `s3.*uid` внутри map-fixed; `vdcUid`/`nsxtUid` — нет.
|
||||||
|
- Спеки map-fixed без строковых секретов (только `*Uid`) → regex `uuidAnywhereRegex` безопасен.
|
||||||
|
|
||||||
## Открытые вопросы (не закрыты)
|
## Открытые вопросы (не закрыты)
|
||||||
|
|
||||||
1. Проверить на живом стенде: create кластера Штурвала **без** `lower(...)` на сборке
|
1. Проверить на живом стенде: create кластера Штурвала **без** `lower(...)` на сборке
|
||||||
|
|||||||
Reference in New Issue
Block a user