# ⛔⛔⛔ ПРАВИЛА РАЗДЕЛЕНИЯ СТЕНДОВ ⛔⛔⛔ > **НАРУШЕНИЕ = УВОЛЬНЕНИЕ. Без шуток.** --- ## Три стенда — три разных мира | Стенд | API | Токен | Провайдер | Версия | Назначение | |-------|-----|-------|-----------|--------|------------| | **PROD** | `deck-api.ngcloud.ru` | `secrets/prod.token` | **Legacy (2.x)** | 2.1.23 | Клиенты, бизнес | | **TEST** | `deck-api-test.ngcloud.ru` | `secrets/test.token` | **Universal (5.x)** | 5.0.55 | Тестирование | | **DEV** | `deck-api-dev.ngcloud.ru` | `secrets/dev.token` | — | 3.0.1 | Не используется | --- ## ⛔ АБСОЛЮТНЫЙ ЗАПРЕТ ### 1. НЕ генерировать Universal из PROD API ```bash # ❌ ТАК ДЕЛАТЬ НЕЛЬЗЯ: NUBES_API_ENDPOINT="https://deck-api.ngcloud.ru" go run tools/service_spec_gen # ✅ ТАК ДЕЛАТЬ ПРАВИЛЬНО: NUBES_API_ENDPOINT="https://deck-api-test.ngcloud.ru" go run tools/service_spec_gen ``` ### 2. НЕ публиковать Universal в PROD-реестр без явной команды PROD реестр (`registry.kube5s.ru ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru -->`) содержит версии для клиентов. Universal (5.x) публикуется только после тестирования на TEST стенде. ### 3. НЕ использовать PROD токен для генерации/тестирования PROD токен — только для PROD операций. Для всего остального — TEST или DEV токены. --- ## ✅ Правильный порядок ### Генерация кода (всегда из TEST API) ```bash cd universal_rebuild # Шаг 1: YAML из TEST API NUBES_API_TOKEN="" \ NUBES_API_ENDPOINT="https://deck-api-test.ngcloud.ru/api/v1/index.cfm" \ NUBES_SERVICES_FILE="../devops/profiles/test/services_list.txt" \ NUBES_OUTPUT_DIR="/tmp/test_yamls" \ go run ./tools/service_spec_gen # Шаг 2: Go из YAML NUBES_RESOURCES_DIR=/tmp/test_yamls \ NUBES_RESOURCES_GEN_DIR=/tmp/test_go \ go run ./tools/gen_v2 # Шаг 3: Документация из YAML go run ./tools/docs_template_gen_v2 \ -resources /tmp/test_yamls \ -docs /tmp/test_docs \ -services ../devops/profiles/test/services_list.txt ``` ### Публикация провайдера - **TEST:** `./devops/03_build_and_upload_provider.sh --profile devops/profiles/test 5.0.56` - **PROD:** `./devops/03_build_and_upload_provider.sh --profile devops/profiles/prod 2.1.24` ### Публикация документации - **TEST:** `./devops/04_build_and_publish_docs.sh --profile devops/profiles/test 5.0.56` - **PROD:** `./devops/04_build_and_publish_docs.sh --profile devops/profiles/prod 2.1.24` --- ## Профили (источник истины) Каждый стенд имеет свой `profile.env`: ``` devops/profiles/prod/profile.env → RELEASE_VERSION=2.1.23, TOKEN_FILE=secrets/prod.token devops/profiles/test/profile.env → RELEASE_VERSION=5.0.55, TOKEN_FILE=secrets/test.token devops/profiles/dev/profile.env → RELEASE_VERSION=3.0.1, TOKEN_FILE=secrets/dev.token ``` **Всегда используй `--profile` при запуске скриптов!** --- ## Проверка перед каждым действием Перед любым `go run`, `curl`, сборкой или публикацией — проверь: 1. **Какой API я дёргаю?** `deck-api` или `deck-api-test`? 2. **Какой токен использую?** PROD или TEST? 3. **Какой профиль?** prod или test? 4. **Совпадают ли?** PROD токен → PROD API. TEST токен → TEST API. **Если сомневаешься — НЕ ДЕЛАЙ. Спроси.** --- ## Связанные документы - `docs/ops/TESTING.md` — ⛔ тесты только в TEST/DEV - `docs/ops/API_TOKENS.md` — матрица токенов - `REPO_INVENTORY.md` — полная карта версий - `devops/profiles/*/profile.env` — конфигурация стендов