diff --git a/PLAN_FLASH_reversion_cleanup.md b/PLAN_FLASH_reversion_cleanup.md new file mode 100644 index 0000000..216c2e7 --- /dev/null +++ b/PLAN_FLASH_reversion_cleanup.md @@ -0,0 +1,106 @@ +# План: чистка реестра + новая нумерация версий по стендам + +> Для Flash. Цель — убрать ВСЕ старые залитые версии (легаси) и ввести единый +> принцип нумерации, чтобы старое (5.1.17 и т.п.) больше нигде не всплывало. + +## Новый принцип нумерации (ЗАФИКСИРОВАТЬ) + +| Стенд | 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.1`) — ЛЕГАСИ. +> Никогда больше не использовать. + +## Текущее состояние в S3 (нужно УДАЛИТЬ ВСЁ) + +Бакет `nubes-terraform-registry`, префикс `tf-registry.containerk8s.services.ngcloud.ru//nubes/`: + +- `nubes-dev`: `3.0.2 3.0.3 3.0.4 3.0.5 3.0.6` +- `nubes` (prod): `2.0.2 2.0.3 2.0.5 2.0.6` +- `nubes-test`: `0.0.1 5.0.1 5.0.2 5.0.3 5.0.4 5.0.5 5.1.17` + +## Шаг 1 — Удалить все залитые версии из S3 + +Креды на запись: subuser `super` аккаунта `1112_terraform`, +передаются через переменные окружения `S3_ACCESS_KEY` и `S3_SECRET_KEY`. + +```bash +mc alias set super-s3 https://s3.msk-1.ngcloud.ru "$S3_ACCESS_KEY" "$S3_SECRET_KEY" --api S3v4 + +# Удалить ВСЕ версии каждого стенда (рекursивно, включая подфайлы) +mc rm --recursive --force super-s3/nubes-terraform-registry/tf-registry.containerk8s.services.ngcloud.ru/nubes-test/nubes/ +mc rm --recursive --force super-s3/nubes-terraform-registry/tf-registry.containerk8s.services.ngcloud.ru/nubes-dev/nubes/ +mc rm --recursive --force super-s3/nubes-terraform-registry/tf-registry.containerk8s.services.ngcloud.ru/nubes/nubes/ +``` + +Проверка после удаления (должно быть пусто): +```bash +mc ls super-s3/nubes-terraform-registry/tf-registry.containerk8s.services.ngcloud.ru/nubes-test/nubes/ +mc ls super-s3/nubes-terraform-registry/tf-registry.containerk8s.services.ngcloud.ru/nubes-dev/nubes/ +mc ls super-s3/nubes-terraform-registry/tf-registry.containerk8s.services.ngcloud.ru/nubes/nubes/ +``` + +## Шаг 2 — Зафиксировать новую нумерацию в конфигах и док-файлах + +Обновить (каждый файл — по новому принципу prod=1.*, dev=2.*, test=3.*): + +1. **`VERSIONS.md`** — таблица версий по стендам + схема: + - PROD → `1.*` (первая `1.0.0`) + - DEV → `2.*` (первая `2.0.0`) + - TEST → `3.*` (первая `3.0.0`) +2. **`TOOLS/config/prod/profile.env`** → `VERSION="1.0.0"` +3. **`TOOLS/config/dev/profile.env`** → `VERSION="2.0.0"` +4. **`TOOLS/config/test/profile.env`** → `VERSION="3.0.0"` +5. **`DOCS_PIPELINE/README.md`** — раздел про нумерацию версий (схема выше). +6. **`docs/30_registry/guides/getting-started.md`** — `version = "..."` в примере привести + к актуальной (или оставить как «подставьте нужную», но НЕ 5.0.5 и не 5.1.17). + +> ⚠️ Проверить, что в этих файлах нигде не осталось `5.1.17`, `5.0.x`, `3.0.x` +> (кроме новой схемы), `2.0.x` (кроме новой `1.x` для prod). Сделать `grep -rn`. + +## Шаг 3 — Перегенерировать провайдеры по новой схеме (01→02→03) + +Для каждого стенда (порядок test → dev → prod), версия = первая по новой схеме: + +```bash +cd /home/naeel/TF/tf_provider + +# TEST → 3.0.0 +./TOOLS/scripts/01_generate_yamls.sh --profile TOOLS/config/test +./TOOLS/scripts/02_generate_resources_and_docs_v2.sh --profile TOOLS/config/test +S3_ACCESS_KEY="$S3_ACCESS_KEY" S3_SECRET_KEY="$S3_SECRET_KEY" \ + ./TOOLS/scripts/03_build_and_upload_provider.sh --profile TOOLS/config/test 3.0.0 + +# DEV → 2.0.0 +./TOOLS/scripts/01_generate_yamls.sh --profile TOOLS/config/dev +./TOOLS/scripts/02_generate_resources_and_docs_v2.sh --profile TOOLS/config/dev +S3_ACCESS_KEY="$S3_ACCESS_KEY" S3_SECRET_KEY="$S3_SECRET_KEY" \ + ./TOOLS/scripts/03_build_and_upload_provider.sh --profile TOOLS/config/dev 2.0.0 + +# PROD → 1.0.0 +./TOOLS/scripts/01_generate_yamls.sh --profile TOOLS/config/prod +./TOOLS/scripts/02_generate_resources_and_docs_v2.sh --profile TOOLS/config/prod +S3_ACCESS_KEY="$S3_ACCESS_KEY" S3_SECRET_KEY="$S3_SECRET_KEY" \ + ./TOOLS/scripts/03_build_and_upload_provider.sh --profile TOOLS/config/prod 1.0.0 +``` + +> Документацию (04) НЕ запускать — пользователь пока не просил. + +## Предусловия (ПРОВЕРЕНО) + +- Go 1.23.1, docker, `mc`, GPG-ключи — на месте. +- Токены API `secrets/{dev,test,prod}.token` — ОБНОВЛЕНЫ 2026-09-03 (валидны, exp 2027-03-02). +- `operation_timeouts.json` в каждом профиле — на месте. +- S3-креды на запись бинарников — `super` subuser (см. выше). +- `registry.env`: hostname `tf-registry.containerk8s.services.ngcloud.ru`, bucket `nubes-terraform-registry`. + +## Контроль + +После каждого `03` — сообщение `Done. Version X.Y.Z uploaded.` +После всех — в S3 должны остаться ТОЛЬКО: +- `nubes/nubes/1.0.0/` +- `nubes-dev/nubes/2.0.0/` +- `nubes-test/nubes/3.0.0/` diff --git a/PLAN_regenerate_providers_0.0.1.md b/PLAN_regenerate_providers_0.0.1.md new file mode 100644 index 0000000..811962c --- /dev/null +++ b/PLAN_regenerate_providers_0.0.1.md @@ -0,0 +1,78 @@ +# План: перегенерация провайдеров всех стендов (версия 0.0.1) + +> Для Flash. Генерацию выполняет Flash по этому плану. Документацию НЕ трогать. + +## Цель +Перегенерировать код Terraform-провайдера Nubes для 3 стендов из API и залить +бинарники **версии 0.0.1**. Документацию не генерировать и не публиковать. + +## Версия +`0.0.1` — для всех трёх стендов. + +## Порядок стендов +`test` → `dev` → `prod` + +## Команды (для каждого стенда, по порядку) + +```bash +cd /home/naeel/TF/tf_provider + +# стенд = test | dev | prod +./TOOLS/scripts/01_generate_yamls.sh --profile TOOLS/config/<стенд> +./TOOLS/scripts/02_generate_resources_and_docs_v2.sh --profile TOOLS/config/<стенд> +./TOOLS/scripts/03_build_and_upload_provider.sh --profile TOOLS/config/<стенд> 0.0.1 +``` + +Полные команды: +```bash +# TEST +./TOOLS/scripts/01_generate_yamls.sh --profile TOOLS/config/test +./TOOLS/scripts/02_generate_resources_and_docs_v2.sh --profile TOOLS/config/test +./TOOLS/scripts/03_build_and_upload_provider.sh --profile TOOLS/config/test 0.0.1 + +# DEV +./TOOLS/scripts/01_generate_yamls.sh --profile TOOLS/config/dev +./TOOLS/scripts/02_generate_resources_and_docs_v2.sh --profile TOOLS/config/dev +./TOOLS/scripts/03_build_and_upload_provider.sh --profile TOOLS/config/dev 0.0.1 + +# PROD +./TOOLS/scripts/01_generate_yamls.sh --profile TOOLS/config/prod +./TOOLS/scripts/02_generate_resources_and_docs_v2.sh --profile TOOLS/config/prod +./TOOLS/scripts/03_build_and_upload_provider.sh --profile TOOLS/config/prod 0.0.1 +``` + +## Что делает каждый шаг + +| Шаг | Результат | +|---|---| +| `01` | тянет YAML-спеки ресурсов из API стенда → `generated/<стенд>/resources_yaml/` | +| `02` | YAML → **Go-код** (`generated/<стенд>/go/`) + `.md`-доки (`generated/<стенд>/docs/`, побочный продукт — НЕ публикуем) | +| `03` | кросс-сборка linux/windows/darwin amd64 (`go build -ldflags "-X main.version=0.0.1 -X main.address=tf-registry.containerk8s.services.ngcloud.ru//nubes"`) → `SHA256SUMS` + GPG-подпись → `mc cp` в S3 | + +## Namespace и target S3 (автоматически из profile.env + registry.env) + +| Стенд | Namespace | Бинарники в S3 | +|---|---|---| +| dev | `nubes-dev` | `nubes-terraform-registry/tf-registry.containerk8s.services.ngcloud.ru/nubes-dev/nubes/0.0.1/` | +| test | `nubes-test` | `.../nubes-test/nubes/0.0.1/` | +| prod | `nubes` | `.../nubes/nubes/0.0.1/` | + +## Предусловия — ПРОВЕРЕНО, всё готово +- Go 1.23.1, docker 29.1.3, `mc`, GPG (`secrets/private_key.asc`, `public_key.asc`). +- Токены API: `secrets/{dev,test,prod}.token` на месте. +- API-эндпоинты доступны (HTTP 403 без токена — ожидаемо, токен передаёт 01). +- `TOOLS/config/<стенд>/operation_timeouts.json` на месте. +- `registry.env`: `REGISTRY_HOSTNAME=tf-registry.containerk8s.services.ngcloud.ru`, `S3_BUCKET=nubes-terraform-registry`. + +## Чего НЕ делать +- НЕ запускать `04_build_and_publish_docs.sh` (документация не нужна сейчас). +- НЕ менять версию `0.0.1` на другую. +- НЕ трогать `.venv`/mkdocs (для 03 не нужны). + +## Контроль успеха +Каждый `03` должен завершиться сообщением `Done. Version 0.0.1 uploaded.` +Проверка версии в реестре после заливки (опционально): +```bash +curl -s https://tf-registry.containerk8s.services.ngcloud.ru/v1/providers//nubes/versions +``` +(должна появиться `0.0.1`).