diff --git a/HISTORY/HOWTO-PUBLISH.md b/HISTORY/HOWTO-PUBLISH.md new file mode 100644 index 0000000..6703cda --- /dev/null +++ b/HISTORY/HOWTO-PUBLISH.md @@ -0,0 +1,104 @@ +# Инструкция: как опубликовать провайдер в реестре + +Реестр: `https://go-registry.containerk8s.dev.nubes.ru` + +## 1. Структура S3 + +``` +{prefix}/{namespace}/{name}/{version}/ +├── terraform-provider-{name}_{version}_{os}_{arch}.zip ← бинарник +├── terraform-provider-{name}_{version}_SHA256SUMS ← контрольные суммы +└── terraform-provider-{name}_{version}_SHA256SUMS.sig ← GPG-подпись +``` + +Где: +- `{prefix}` — сейчас `registry.kube5s.ru` (будет сменён) +- `{namespace}` — `nubes-test`, `nubes-dev`, `nubes` (PROD) +- `{name}` — `nubes` +- `{os}_{arch}` — `linux_amd64`, `windows_amd64`, `darwin_amd64` + +Пример: +``` +registry.kube5s.ru/nubes-test/nubes/5.1.17/terraform-provider-nubes_5.1.17_linux_amd64.zip +``` + +## 2. Как загрузить в S3 + +### Нужны креды +``` +S3_ENDPOINT=s3.msk-1.ngcloud.ru +S3_ACCESS_KEY=... +S3_SECRET_KEY=... +S3_BUCKET=terraform-registry +``` + +### Утилита `mc` (MinIO Client) +```bash +mc alias set nubes-s3 https://s3.msk-1.ngcloud.ru $S3_ACCESS_KEY $S3_SECRET_KEY + +# Загрузка +mc cp ./terraform-provider-nubes_5.1.17_linux_amd64.zip \ + nubes-s3/terraform-registry/registry.kube5s.ru/nubes-test/nubes/5.1.17/ +mc cp ./SHA256SUMS nubes-s3/terraform-registry/registry.kube5s.ru/nubes-test/nubes/5.1.17/ +mc cp ./SHA256SUMS.sig nubes-s3/terraform-registry/registry.kube5s.ru/nubes-test/nubes/5.1.17/ +``` + +### Или `awscli` +```bash +aws s3 cp ... s3://terraform-registry/registry.kube5s.ru/nubes-test/nubes/5.1.17/ \ + --endpoint-url https://s3.msk-1.ngcloud.ru +``` + +## 3. GPG-подпись (обязательно) + +Terraform требует подпись SHA256SUMS. + +### Приватный ключ +Хранится в `secrets/private_key.asc`. Публичный ключ (KEY ID: `3EC4673EB798238A`) вшит в реестр. + +### Подписать +```bash +gpg --import secrets/private_key.asc +gpg --detach-sign --armor SHA256SUMS +# → SHA256SUMS.asc (переименовать в SHA256SUMS.sig) +``` + +## 4. Документация + +``` +docs/{namespace}/{name}/{version}/index.html +docs/{namespace}/{name}/{version}/...любые файлы... +``` + +Заливаешь в S3 — автоматом доступна по: +``` +https://go-registry.containerk8s.dev.nubes.ru/docs/{ns}/{name}/{ver}/ +``` + +## 5. Использование пользователем + +```hcl +terraform { + required_providers { + nubes = { + source = "go-registry.containerk8s.dev.nubes.ru/nubes-test/nubes" + version = "5.1.17" + } + } +} +``` + +Terraform сам найдёт реестр, скачает провайдер, проверит SHA256 и GPG-подпись. + +## 6. Скрипт автоматизации + +В репозитории `tf_registry` есть скрипт `server/build-provider.sh` — он делает всё сам: +- Компилирует провайдер под linux/windows/darwin × amd64 +- Упаковывает в zip +- Генерирует SHA256SUMS +- Подписывает GPG +- Заливает в S3 + +```bash +VERSION=5.1.17 NAMESPACE=nubes-test ./server/build-provider.sh +```