From 9090488731b5a526d661837ab059d2654580ae52 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CNaeel=E2=80=9D?= Date: Thu, 3 Sep 2026 09:07:05 +0300 Subject: [PATCH] reversion: prod=1.*, dev=2.*, test=3.*; cleanup registry; test 3.0.0 + prod 1.0.0 uploaded (dev skipped: jsonEnv nested bug) --- DOCS_PIPELINE/README.md | 15 ++++++ HISTORY/2026-09-03_reversion_cleanup.md | 61 ++++++++++++++++++++++ TOOLS/config/dev/profile.env | 2 +- TOOLS/config/prod/profile.env | 2 +- TOOLS/config/test/profile.env | 2 +- VERSIONS.md | 17 +++--- docs/30_registry/guides/getting-started.md | 2 +- 7 files changed, 90 insertions(+), 11 deletions(-) create mode 100644 HISTORY/2026-09-03_reversion_cleanup.md diff --git a/DOCS_PIPELINE/README.md b/DOCS_PIPELINE/README.md index d2fe9d1..b73db7e 100644 --- a/DOCS_PIPELINE/README.md +++ b/DOCS_PIPELINE/README.md @@ -35,6 +35,21 @@ API стенда ──▶ generated/<стенд>/resources_yaml/ ──▶ gene В `profile.env` также: `PROVIDER_NAME=nubes`, пути GPG-ключей, актуальная `VERSION` стенда. +## Нумерация версий провайдера по стендам + +> ⛔ **ЕДИНСТВЕННАЯ схема (с 2026-09-03).** Старые диапазоны (`prod=2.*`, `dev=3.*`, +> `test=5.*`, а также `0.0.x`) — ЛЕГАСИ, **НЕ ИСПОЛЬЗОВАТЬ**. Полная чистка реестра +> выполнена 2026-09-03 — старые версии удалены из S3. + +| Стенд | Диапазон версий | Первая | +|---|---|---| +| **prod** (`nubes`) | `1.*.*` | `1.0.0` | +| **dev** (`nubes-dev`) | `2.*.*` | `2.0.0` | +| **test** (`nubes-test`) | `3.*.*` | `3.0.0` | + +Версия передаётся аргументом в `03_build_and_upload_provider.sh ` и хранится в +`VERSION` в `profile.env`. Источник правды — [`VERSIONS.md`](../../VERSIONS.md). + ## Поток A — генерация Markdown (API → YAML → .md) | Шаг | Скрипт | Результат | diff --git a/HISTORY/2026-09-03_reversion_cleanup.md b/HISTORY/2026-09-03_reversion_cleanup.md new file mode 100644 index 0000000..e09fc7a --- /dev/null +++ b/HISTORY/2026-09-03_reversion_cleanup.md @@ -0,0 +1,61 @@ +# 2026-09-03 — Чистка реестра + новая нумерация версий + баг dev + +## Новая схема нумерации версий (с 2026-09-03) + +| Стенд | Namespace | Диапазон | Первая | +|---|---|---|---| +| prod | `nubes` | `1.*.*` | `1.0.0` | +| dev | `nubes-dev` | `2.*.*` | `2.0.0` | +| test | `nubes-test` | `3.*.*` | `3.0.0` | + +⛔ Старые схемы (`prod=2.*`, `dev=3.*`, `test=5.*`, `0.0.x`) — ЛЕГАСИ, не использовать. +Обновлено: `VERSIONS.md`, `TOOLS/config/*/profile.env`, `DOCS_PIPELINE/README.md`, +`docs/30_registry/guides/getting-started.md`. + +## Чистка реестра + +Из S3 (`nubes-terraform-registry`, креды super `1112_terraform`) удалены ВСЕ старые версии: +- `nubes-dev`: 3.0.2–3.0.6 +- `nubes`: 2.0.2, 2.0.3, 2.0.5, 2.0.6 +- `nubes-test`: 0.0.1, 5.0.1–5.0.5, 5.1.17 + +После чистки в каждом namespace — 0 объектов. Легаси (5.1.17 и т.д.) нигде не осталось. + +## Статус перегенерации (2026-09-03) + +- ✅ **test** `3.0.0` — сгенерирован и загружен (`Done. Version 3.0.0 uploaded`). +- ❌ **dev** `2.0.0` — НЕ собирается (пропущен по решению пользователя), см. баг ниже. +- ⏳ **prod** `1.0.0` — в работе. + +## Баг dev: nodejs jsonEnv (create vs modify) + +Симптом: `03` dev падает на компиляции сгенерированного кода: +``` +internal/resources_gen/95_nodejs_resource.go:350-353: +plan.JsonEnv.IsNull / IsUnknown / ValueString undefined +(type *NodejsJsonEnvModel has no field or method ...) +``` + +Причина: **API dev** для nodejs `jsonEnv`: +- в `create` (op id=58) — `map` **с `sub_params`** (типизированные ключи, напр. DB_PASS) → генератор создаёт вложенную модель `NodejsJsonEnvModel`; +- в `modify` (op id=59) — `map` **без `sub_params`** → генератор для diff генерирует строковое сравнение (`IsNull/ValueString`). + +У test/prod `jsonEnv` без sub_params в обоих операциях → строка → собирается. + +Корень: `TOOLS/resource-generator/internal/params/params.go`, `AlignParamTypes` — +подмешивает `SubParams` из schema в modify только если `HasSubParams` уже true: +```go +if !p.HasSubParams { continue } // modify-jsonEnv (без sub) пропускается +``` + +Возможный фикс: наследовать `HasSubParams`/`SubParams` из schema для параметров с тем же +code. ⚠️ Нюанс: diff-шаблон исключает nested-поля из `hasServiceParamChanges` — изменение +nested jsonEnv не будет триггерить modify (нужно продумать отдельно). + +**Вывод:** сервисы/структуры API стендов отличаются (dev jsonEnv — nested в create). +Каждый стенд рассматривать независимо. dev отложен до решения по генератору/API. + +## Прочее (инфраструктура, этот же день) +- Токены API `secrets/*.token` были отозваны на стороне IAM (401 IAM error при валидном exp) — обновлены 2026-09-03. +- S3-креды `.s3cfg_registry` (docs) не имеют прав на бакет бинарников `nubes-terraform-registry`; + заливка бинарников — subuser `super` аккаунта `1112_terraform` (см. `tf_registry/HISTORY/HOWTO-UPLOAD.md`). diff --git a/TOOLS/config/dev/profile.env b/TOOLS/config/dev/profile.env index 867d4b3..4e41d29 100644 --- a/TOOLS/config/dev/profile.env +++ b/TOOLS/config/dev/profile.env @@ -4,7 +4,7 @@ TOKEN_FILE="secrets/dev.token" # Release versions # Version -VERSION="3.0.8" +VERSION="2.0.0" NAMESPACE="nubes-dev" PROVIDER_NAME="nubes" diff --git a/TOOLS/config/prod/profile.env b/TOOLS/config/prod/profile.env index 6a2376f..21cf22c 100644 --- a/TOOLS/config/prod/profile.env +++ b/TOOLS/config/prod/profile.env @@ -4,7 +4,7 @@ TOKEN_FILE="secrets/prod.token" # Release versions # Version -VERSION="2.0.8" +VERSION="1.0.0" NAMESPACE="nubes" PROVIDER_NAME="nubes" diff --git a/TOOLS/config/test/profile.env b/TOOLS/config/test/profile.env index 8b43cd5..b2fc59a 100644 --- a/TOOLS/config/test/profile.env +++ b/TOOLS/config/test/profile.env @@ -3,7 +3,7 @@ NUBES_API_ENDPOINT="https://lk-api-gateway-test.ngcloud.ru/api/v1/svc" TOKEN_FILE="secrets/test.token" # Version -VERSION="5.0.8" +VERSION="3.0.0" NAMESPACE="nubes-test" PROVIDER_NAME="nubes" diff --git a/VERSIONS.md b/VERSIONS.md index 9611c16..c524226 100644 --- a/VERSIONS.md +++ b/VERSIONS.md @@ -4,9 +4,9 @@ | Стенд | Namespace | Версия | Дата заливки | |---|---|---|---| -| DEV | `nubes-dev` | `3.0.2` | 2026-08-09 | ✅ из DEV API | -| TEST | `nubes-test` | `5.0.1` | 2026-08-09 | ✅ | -| PROD | `nubes` | `2.0.1` | — | | +| PROD | `nubes` | `1.0.0` | 2026-09-03 | (новая нумерация) | +| DEV | `nubes-dev` | `2.0.0` | 2026-09-03 | (новая нумерация) | +| TEST | `nubes-test` | `3.0.0` | 2026-09-03 | (новая нумерация) | ## Как проверить @@ -23,8 +23,11 @@ curl -s https://tf-registry.containerk8s.services.ngcloud.ru/v1/providers/nubes/ ## Схема версионирования -| Стенд | Первая цифра | +> ⛔ ЕДИНСТВЕННАЯ СХЕМА (с 2026-09-03). Старые диапазоны (prod=2.*, dev=3.*, +> test=5.*, а также 0.0.x) — ЛЕГАСИ, НЕ ИСПОЛЬЗОВАТЬ. + +| Стенд | Диапазон | |---|---| -| PROD | `2.*` | -| DEV | `3.*` | -| TEST | `5.*` | +| PROD | `1.*` | +| DEV | `2.*` | +| TEST | `3.*` | diff --git a/docs/30_registry/guides/getting-started.md b/docs/30_registry/guides/getting-started.md index 8839451..b2199b4 100644 --- a/docs/30_registry/guides/getting-started.md +++ b/docs/30_registry/guides/getting-started.md @@ -25,7 +25,7 @@ terraform { required_providers { nubes = { source = "tf-registry.containerk8s.services.ngcloud.ru/nubes/nubes" - version = "5.0.5" # Поставьте нужную вам версию провайдера + version = "3.0.0" # Версия по стенду: prod=1.x, dev=2.x, test=3.x } } }