docs: STANDS.md — NEVER mix PROD/TEST/DEV environments

This commit is contained in:
“Naeel”
2026-07-01 09:55:38 +04:00
parent ba4eebedd2
commit 78740de602
+111
View File
@@ -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="<TEST_JWT>" \
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` — конфигурация стендов