# Билд и публикация ## 1. Сборка провайдера (universal_rebuild) Общий цикл: 1) Генерация YAML параметров для сервиса (service_params_gen). 2) Генерация Go-ресурсов (tools/gen). 3) Сборка бинарника go build. Ключевые каталоги: - universal_rebuild/resources_yaml - universal_rebuild/internal/resources_gen - universal_rebuild/tools/gen ## 2. Публикация провайдера в Registry - Артефакты: zip, SHA256SUMS, SHA256SUMS.sig - Подпись: для .sig использовать бинарную detached подпись - Хранилище: S3 bucket terraform-registry - Префикс: docs//// для документации, отдельный префикс для бинарников по правилам registry-сервера ### Важное про GPG ключи - Приватный ключ должен быть стабильным между релизами. - Если ключ перевыпущен, обнови публичный ключ в registry server (ASCII Armor в `registry-server-build/main.go` и `operator/cmd/registry/main.go`) и задеплой сервис. - Иначе `terraform init` упадет с `authentication signature from unknown issuer`. #### One-time bootstrap 1) Сгенерируй и экспортируй ключи в `secrets/`. 2) Вставь ASCII Armor публичного ключа в: - `registry-server-build/main.go` - `operator/cmd/registry/main.go` 3) Пересобери и задеплой registry server. 4) Пересобери и загрузите артефакты провайдера. ## 3. Документация (MkDocs) ### Сборка - Использовать Docker образ squidfunk/mkdocs-material - Результат: директория site/ ### Публикация - Использовать scripts/publish-docs.sh - Путь в S3: docs//// ## 4. Важные нюансы - При смене домена обновлять registry и ключи подписи. - Пресайнд URL через Ingress может ломаться — использовать proxy mode. - В документации исключены технические папки, не предназначенные для публикации. ## 5. Операции (non-CRUD) - Ops YAML (для всех операций): `./devops/01b_generate_ops_yamls.sh` - Документация операций: `./devops/02b_generate_ops_docs.sh`