Files
tf_provider/HOW_TO/HOWTO-UPLOAD.md
T
Repinoid f7fffb9ed7 refactor: разложить рабочие материалы по NOTES/ и HOW_TO/, корневой README — карта проекта
- NOTES/: 10_plans, 20_prompts, 30_analysis, 40_chat_summaries, 60_reference + README в каждой папке
- HOW_TO/: все общие инструкции (сборка/заливка, DevOps-ранбук, добавление сервиса, миграция, генерация доков) + индекс «что нужно -> какой файл»
- новый README.md: карта проекта, пайплайн, стенды, реестр, запреты/грабли
- HOWTO-UPLOAD.md: исправлена легаси-схема версий (prod=1.*, dev=2.*, test=3.*)
- DEVOPS_BUILD_PIPELINE.md: пути скриптов -> TOOLS/scripts, universal_rebuild/main.go -> provider/main.go
- howitwasdone.md / MIGRATION_PLAN_FOR_AGENT.md: пометки о соответствии старых путей
- внутри перенесённых файлов обновлены ссылки на новые пути
2026-09-24 07:51:38 +03:00

5.3 KiB

Как собрать и залить провайдер

Схема версий

Первая цифра версии жёстко привязана к стенду. НЕ ПУТАТЬ.

Стенд Namespace Диапазон Профиль
PROD nubes 1.* TOOLS/config/prod
DEV nubes-dev 2.* TOOLS/config/dev
TEST nubes-test 3.* TOOLS/config/test

ЛЕГАСИ (не использовать): prod=2.*, dev=3.*, test=5.*, 0.0.1. Примеры версий ниже в этом файле могут содержать легаси-номера — подставляйте актуальную из ../VERSIONS.md.

Архитектура конфигурации

TOOLS/config/
├── registry.env          ← ЕДИНЫЙ реестр (НЕ зависит от стенда)
│     REGISTRY_HOSTNAME = tf-registry.containerk8s.services.ngcloud.ru
│     S3_ENDPOINT       = https://s3.msk-1.ngcloud.ru
│     S3_BUCKET         = nubes-terraform-registry
│
├── dev/profile.env       ← стенд-специфика
│     NUBES_API_ENDPOINT = ...dev...
│     TOKEN_FILE         = secrets/dev.token
│     NAMESPACE          = nubes-dev
│     VERSION            = 2.x.x  ← актуальную брать из VERSIONS.md
│
├── test/profile.env
└── prod/profile.env

Скрипты подгружают ОБА файла: registry.env → общие настройки реестра, profile.env → стенд-специфика.

Чтобы сменить реестр — правишь только TOOLS/config/registry.env.

Полный пайплайн (3 шага)

Требования

  • Токены в secrets/{dev,test,prod}.token
  • secrets/private_key.asc — GPG-ключ для подписи
  • secrets/.s3cfg_registry — S3-креды (или S3_ACCESS_KEY/S3_SECRET_KEY в env)
  • go установлен
  • mc (MinIO Client) установлен, алиас prod-s3

Шаг 1 — Сгенерировать YAML из API

cd ~/tf_provider
./TOOLS/scripts/01_generate_yamls.sh --profile TOOLS/config/dev

Запрашивает спецификации сервисов из API стенда → пишет YAML в generated/dev/resources_yaml/.

Шаг 2 — Сгенерировать Go-ресурсы и документацию

./TOOLS/scripts/02_generate_resources_and_docs_v2.sh --profile TOOLS/config/dev

Из YAML генерирует:

  • generated/dev/go/ — Go-код ресурсов
  • generated/dev/docs/ — Markdown-документацию

Шаг 3 — Собрать и залить в реестр

./TOOLS/scripts/03_build_and_upload_provider.sh --profile TOOLS/config/dev 2.0.18

Компилирует (linux/windows/darwin), подписывает GPG, заливает в S3.

Одной командой (для ленивых)

./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 2.0.18

Быстрая заливка (без перегенерации YAML/Go)

Если YAML'ы и Go-код уже сгенерированы и не менялись — только шаг 3:

# DEV (2.*)
./TOOLS/scripts/03_build_and_upload_provider.sh --profile TOOLS/config/dev 2.0.18

# TEST (3.*)
./TOOLS/scripts/03_build_and_upload_provider.sh --profile TOOLS/config/test 3.0.1

# PROD (1.*)
./TOOLS/scripts/03_build_and_upload_provider.sh --profile TOOLS/config/prod 1.0.1

Креды S3 подхватываются из secrets/.s3cfg_registry. Или через env:

export S3_ACCESS_KEY=...
export S3_SECRET_KEY=...

Структура S3

nubes-terraform-registry/
└── tf-registry.containerk8s.services.ngcloud.ru/
    └── {namespace}/
        └── nubes/
            └── {version}/
                ├── terraform-provider-nubes_{ver}_linux_amd64.zip
                ├── terraform-provider-nubes_{ver}_windows_amd64.zip
                ├── terraform-provider-nubes_{ver}_darwin_amd64.zip
                ├── terraform-provider-nubes_{ver}_SHA256SUMS
                └── terraform-provider-nubes_{ver}_SHA256SUMS.sig

Проверка после заливки

# DEV
curl -s https://tf-registry.containerk8s.services.ngcloud.ru/v1/providers/nubes-dev/nubes/versions | python3 -m json.tool

# TEST
curl -s https://tf-registry.containerk8s.services.ngcloud.ru/v1/providers/nubes-test/nubes/versions | python3 -m json.tool

# PROD
curl -s https://tf-registry.containerk8s.services.ngcloud.ru/v1/providers/nubes/nubes/versions | python3 -m json.tool

Актуальные версии

Файл ../VERSIONS.md — единственный источник правды. После каждой заливки — обновить.

Terraform-конфиг пользователя

terraform {
  required_providers {
    nubes = {
      source  = "tf-registry.containerk8s.services.ngcloud.ru/nubes-dev/nubes"
      version = "2.0.18"
    }
  }
}