diff --git a/docs/ops/STANDS.md b/docs/ops/STANDS.md new file mode 100644 index 0000000..5d8e97e --- /dev/null +++ b/docs/ops/STANDS.md @@ -0,0 +1,111 @@ +# ⛔⛔⛔ ПРАВИЛА РАЗДЕЛЕНИЯ СТЕНДОВ ⛔⛔⛔ + +> **НАРУШЕНИЕ = УВОЛЬНЕНИЕ. Без шуток.** + +--- + +## Три стенда — три разных мира + +| Стенд | 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 реестр (`terra.k8c.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` — конфигурация стендов