Перейти до основного вмісту

Змінні середовища

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_URLpostgres://db/myappGlobal Override
RAILS_ENVdevelopmentDefault
PORT8080Service Override
SECRET_KEY_BASEabc123Global Override
PLAYGROUND_ID42System

Змінні за замовчуванням

Змінні за замовчуванням завантажуються з файлу .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). Це корисно для діагностики проблем конфігурації.