Документация MkDocs: генерация и заливка в реестр
⛔⛔⛔ НЕ ЛОМАТЬ РАБОТАЮЩИЙ КОД ⛔⛔⛔
Эта папка — справочная. Скрипты пайплайна в
TOOLS/scripts/иscripts/работают и должны оставаться нетронутыми. Любая правка в них — только после явного «делай» и с проверкой, что ничего не сломалось.
Что здесь
Всё про генерацию документации провайдера Nubes, сборку MkDocs-сайта и заливку статики в S3-реестр.
Два независимых потока
A. Генерация Markdown-доков по ресурсам (API → YAML → .md)
| Шаг | Скрипт | Что делает |
|---|---|---|
| 1 | TOOLS/scripts/01_generate_yamls.sh --profile TOOLS/config/<стенд> |
Тянет спецификации из API стенда → generated/<стенд>/resources_yaml/ |
| 2 | TOOLS/scripts/02_generate_resources_and_docs_v2.sh --profile TOOLS/config/<стенд> |
YAML → Go-код (TOOLS/bin/resource-generator) + Markdown-доки (TOOLS/bin/docs-generator) в generated/<стенд>/docs/ |
| 3 (опц.) | TOOLS/scripts/05_generate_docs_llm.py |
Прогоняет .md через LLM (улучшение описаний) |
| 4 | TOOLS/scripts/03_build_and_upload_provider.sh --profile ... <ver> |
Сборка провайдера + GPG-подпись + заливка бинарников в S3 |
B. Сборка MkDocs-сайта + заливка доков в S3
| Шаг | Скрипт | Что делает |
|---|---|---|
| 1 | TOOLS/scripts/04_build_and_publish_docs.sh --profile ... <ver> |
Генерирует .mkdocs.tmp.yml (версия/docs_dir/nav), собирает сайт (docker → venv → system mkdocs) в site/ |
| 2 | scripts/publish-docs.sh |
Заливает site/ в S3 (mc cp --recursive + mc policy set public) |
| 3 (опц.) | scripts/publish-doc-page.sh |
Заливка одной страницы |
| CI | .github/workflows/publish-docs.yml |
Авто-публикация по git-тегу v*.*.* |
Команды (полный цикл, стенд = dev/test/prod)
# 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 3.1.13
./TOOLS/scripts/04_build_and_publish_docs.sh --profile TOOLS/config/dev 3.1.13
Быстрая заливка (YAML/Go уже сгенерированы, не менялись) — только шаг 3/4:
./TOOLS/scripts/03_build_and_upload_provider.sh --profile TOOLS/config/test 5.1.17
./TOOLS/scripts/04_build_and_publish_docs.sh --profile TOOLS/config/test 5.1.17
Ручная заливка доков (рабочий способ)
# S3-креды из secrets/.s3cfg_registry (или env S3_ENDPOINT/S3_ACCESS_KEY/S3_SECRET_KEY)
/home/naeel/terra/scripts/publish-docs.sh \
site \
tf-registry.containerk8s.services.ngcloud.ru \
nubes nubes 2.0.2
Список файлов
Скрипты (пайплайн)
TOOLS/scripts/01_generate_yamls.shTOOLS/scripts/02_generate_resources_and_docs_v2.shTOOLS/scripts/03_build_and_upload_provider.shTOOLS/scripts/04_build_and_publish_docs.shTOOLS/scripts/05_generate_docs_llm.pyTOOLS/scripts/build-provider.shscripts/publish-doc-page.shscripts/publish-docs.sh← ⚠️ см. «Известная проблема» ниже
Генераторы (Go-бинарники)
TOOLS/bin/resource-generatorTOOLS/bin/docs-generatorTOOLS/bin/yaml-generator
Конфиг
mkdocs.yml— конфиг MkDocs (site_url, nav, тема material)TOOLS/config/registry.env— реестр (REGISTRY_HOSTNAME,S3_ENDPOINT,S3_BUCKET)TOOLS/config/{dev,test,prod}/profile.env— стенд (NUBES_API_ENDPOINT,NAMESPACE,VERSION)TOOLS/config/{dev,test,prod}/services_list.txtTOOLS/config/{dev,test,prod}/operation_timeouts.json
Секреты
secrets/{dev,test,prod}.tokensecrets/private_key.asc— GPG-подписьsecrets/.s3cfg_registry— S3-креды
Контент / ассеты
docs/— ручные источники (index.md,curated/,help/,30_registry/и др.)docs/30_registry/—guides/,resources/,assets/,javascripts/fix-slash.jsgenerated/<стенд>/docs/— сгенерированные доки (включая_nav_fragment.yml)site/,site_test/— результат сборки
S3 / бакеты
| Что | Бакет | Путь |
|---|---|---|
| Документация | terraform-registry |
docs/<namespace>/<name>/<version>/ |
| Бинарники провайдера | nubes-terraform-registry |
<host>/<namespace>/<name>/<version>/ |
- Эндпоинт S3:
https://s3.msk-1.ngcloud.ru - Хост реестра:
tf-registry.containerk8s.services.ngcloud.ru - Клиент:
mc(MinIO), алиасыprod-s3/reg/registry/tfreg
⚠️ Известная проблема: scripts/publish-docs.sh отсутствует в этом репозитории
- Скрипт
scripts/publish-docs.shудалён из/home/naeel/tf_providerкоммитомc2438f5(2026-07-05, «superseded by devops/»). - Но
TOOLS/scripts/04_build_and_publish_docs.sh(строка ~280) и.github/workflows/publish-docs.yml(строка ~54) до сих пор вызывают./scripts/publish-docs.sh. - Следствие: запуск
04из этого репозитория соберёт сайт, но упадёт на шаге заливки (No such file or directory). CI по тегу — аналогично.
Рабочая копия скрипта живёт в старом репозитории (отдельный git, не клон):
/home/naeel/terra/scripts/publish-docs.sh- архив:
/home/naeel/terraform__OFF/scripts/publish-docs.sh
Копия этого скрипта сохранена рядом: publish-docs.sh
Варианты устранения (только после «делай»)
- Восстановить
scripts/publish-docs.shв это репозиторий (из копии рядом или из gitc2438f5^). - Инлайнить заливку прямо в
04_build_and_publish_docs.sh(как уже сделано вpublish-doc-page.sh).