Змінні середовища
fibe.gg використовує трирівневу систему злиття для змінних середовища. Розуміння цього порядку злиття важливе для правильної конфігурації ваших сервісів.
Порядок злиття
Змінні середовища обробляються у такому порядку, де пізніші рівні перевизначують попередні:
Default → Global Override → Service Override → System
| Рівень | Джерело | Можна перевизначити? |
|---|---|---|
| Default | Зчитані з файлу .env.example у репозиторії (вказаний через env_file_path на Playspec) | ✅ Так |
| Global Override | Встановлені при створенні Playground — застосовуються до всіх сервісів | ✅ Так |
| Service Override | Встановлені при створенні Playground — застосовуються до конкретного сервісу | ✅ Так |
| System | Автоматично додані платформою | ❌ Ні — завжди мають пріоритет |
Приклад
За такої конфігурації:
# .env.example (Default)
DATABASE_URL=postgres://localhost/dev
RAILS_ENV=development
PORT=3000
# Global Override
DATABASE_URL=postgres://db/myapp
SECRET_KEY_BASE=abc123
# Service Override (web)
PORT=8080
# System
PLAYGROUND_ID=42
Фінальні зʼєднані змінні для сервісу web:
| Змінна | Значення | Джерело |
|---|---|---|
DATABASE_URL | postgres://db/myapp | Global Override |
RAILS_ENV | development | Default |
PORT | 8080 | Service Override |
SECRET_KEY_BASE | abc123 | Global Override |
PLAYGROUND_ID | 42 | System |
Змінні за замовчуванням
Змінні за замовчуванням завантажуються з файлу .env.example (або іншого шляху, налаштованого в env_file_path) у репозиторії на обраній гілці. Платформа зчитує цей файл при створенні Playground та використовує його як базовий рівень.
Ви можете переглянути змінні за замовчуванням для будь-якої гілки через API: GET /api/playzones/:id/env_defaults?branch=main
Перевизначення змінних
Перевизначення встановлюються при створенні або оновленні Playground:
Глобальні перевизначення
Застосовуються до всіх сервісів у Playground. Встановлюються через поле env_overrides при створенні Playground.
Перевизначення для сервісу
Застосовуються тільки до конкретного сервісу. Встановлюються через поле services.{name}.env_vars при створенні Playground.
Перевизначення для сервісу мають пріоритет над глобальними перевизначеннями для однієї змінної.
Системні змінні
Системні змінні додаються автоматично платформою і не можуть бути перевизначені користувачами. Вони генеруються з конфігурації environment сервісу Playspec (напр., URL виявлення сервісів, внутрішні значення платформи).
Автоматична генерація секретів
Платформа підтримує автоматичну генерацію секретів за допомогою патерну $$secret(N) у вашому файлі .env.example, де N — кількість hex-символів для генерації:
SECRET_KEY_BASE=$$secret(64)
JWT_SECRET=$$secret(32)
При створенні Playground кожен плейсхолдер $$secret(N) замінюється криптографічно випадковим hex-рядком вказаної довжини. Згенеровані секрети:
- Зберігаються для кожного Playground
- Постійні між сесіями (не змінюються, якщо явно не перегенеровані)
- Маскуються у UI для чутливих ключів
Перегенерація секретів
Ви можете перегенерувати будь-який автоматично згенерований секрет з панелі змінних середовища Playground або через API. Нове значення набирає чинності при наступному пересозданні Playground.
Виявлення чутливих ключів
Платформа автоматично виявляє чутливі змінні (паролі, секрети, токени, API-ключі) за типовими патернами іменування та маскує їх значення в UI. Ключі, що відповідають патернам *PASSWORD*, *SECRET*, *TOKEN*, *KEY*, вважаються чутливими.
Перегляд метаданих середовища
Environment Metadata API повертає фінальні зʼєднані змінні разом з метаданими, що вказують джерело кожного значення (default, override або system). Це корисно для діагностики проблем конфігурації.