- 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: пометки о соответствии старых путей - внутри перенесённых файлов обновлены ссылки на новые пути
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"
}
}
}