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` /
|
||||
`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(...)` на сборке
|
||||
|
||||
Reference in New Issue
Block a user