Окружения
Окружение (Environment) — это конфигурация для определённого типа деплоев. Окружения позволяют иметь разные настройки для production и preview версий приложения.
Типы окружений
Заголовок раздела «Типы окружений»Production
Заголовок раздела «Production»Основное окружение для production версии приложения.
| Характеристика | Значение |
|---|---|
| Ветка | Основная ветка (main, master) |
| URL | Production alias: project-workspace.onreza.app |
| Custom Domains | Поддерживаются |
| Создаётся | Автоматически при создании проекта |
Preview
Заголовок раздела «Preview»Окружение для preview деплоев — тестирования изменений до мержа. При деплое в preview окружение статус деплоя проходит через UPLOADING во время загрузки артефактов.
| Характеристика | Значение |
|---|---|
| Ветки | Все ветки кроме main |
| URL | Branch alias: project-git-branch-workspace.onreza.app |
| Custom Domains | Не поддерживаются |
| Создаётся | Автоматически при создании проекта |
Пользовательские окружения для специфических сценариев.
| Характеристика | Значение |
|---|---|
| Ветки | Настраиваемый паттерн |
| URL | Зависит от настройки |
| Custom Domains | Поддерживаются |
| Создаётся | Вручную |
Примеры использования:
- Staging — предрелизное тестирование
- QA — окружение для QA команды
- Demo — демо для клиентов
Создание Custom окружения
Заголовок раздела «Создание Custom окружения»-
Откройте настройки проекта
Перейдите в проект → Settings → Environments
-
Нажмите “Add Environment”
-
Заполните форму
Поле Описание Name Название (например, “Staging”) Type Custom Branch Pattern Паттерн ветки Match Type Тип сопоставления -
Сохраните
Branch Pattern (Паттерн ветки)
Заголовок раздела «Branch Pattern (Паттерн ветки)»Определяет какие ветки относятся к окружению.
Match Types
Заголовок раздела «Match Types»| Тип | Описание | Пример паттерна | Совпадает с |
|---|---|---|---|
| Equals | Точное совпадение | staging | только staging |
| Starts With | Начинается с | release/ | release/1.0, release/2.0 |
| Ends With | Заканчивается на | -prod | feature-prod, hotfix-prod |
Примеры
Заголовок раздела «Примеры»# Staging окружениеPattern: stagingMatch: Equals→ Ветка 'staging' → Staging окружение
# Release окруженияPattern: release/Match: Starts With→ Ветка 'release/1.0' → Custom окружение
# Hotfix в productionPattern: hotfix-Match: Starts With→ Ветка 'hotfix-urgent' → Custom окружениеEnvironment Variables по окружениям
Заголовок раздела «Environment Variables по окружениям»Каждое окружение может иметь свои переменные:
- Откройте Settings → Environment Variables
- При создании переменной выберите Scope → Selected
- Отметьте нужные окружения
- Сохраните
Пример:
# ProductionDATABASE_URL=postgres://prod-db/appAPI_URL=https://api.example.com
# PreviewDATABASE_URL=postgres://staging-db/appAPI_URL=https://api.staging.example.com
# Custom (Staging)DATABASE_URL=postgres://staging-db/appAPI_URL=https://api.staging.example.comCustom Domains по окружениям
Заголовок раздела «Custom Domains по окружениям»Production и Custom окружения могут иметь свои домены:
| Окружение | Домен |
|---|---|
| Production | app.example.com |
| Staging (Custom) | staging.app.example.com |
Auto Deploy
Заголовок раздела «Auto Deploy»Для каждого окружения можно настроить автодеплой:
- Включён — webhook триггерит деплой при пуше в соответствующую ветку
- Выключен — деплои только вручную
- Откройте Settings → Environments
- Выберите окружение
- Включите/выключите Auto Deploy
- Сохраните
Редактирование окружения
Заголовок раздела «Редактирование окружения»- Откройте Settings → Environments
- Нажмите на окружение
- Измените настройки
- Сохраните
Удаление Custom окружения
Заголовок раздела «Удаление Custom окружения»- Откройте Settings → Environments
- Найдите Custom окружение
- Нажмите удалить
- Подтвердите
Приоритет окружений
Заголовок раздела «Приоритет окружений»Когда ветка подходит под несколько окружений, используется приоритет:
- Custom (с более специфичным паттерном)
- Production (для main ветки)
- Preview (для всех остальных)
Пример:
Ветка: stagingОкружения: - Production (main) — не совпадает - Preview (all except main) — совпадает - Custom "Staging" (staging, Equals) — совпадает, более специфичный
→ Используется Custom "Staging"Use Cases
Заголовок раздела «Use Cases»Staging окружение
Заголовок раздела «Staging окружение»Name: StagingType: CustomPattern: stagingMatch: Equals- Отдельные environment variables
- Отдельный custom domain:
staging.example.com - Для финального тестирования перед production
Release branches
Заголовок раздела «Release branches»Name: ReleaseType: CustomPattern: release/Match: Starts Withrelease/1.0,release/2.0и т.д.- Для подготовки релизов
Feature preview для определённой команды
Заголовок раздела «Feature preview для определённой команды»Name: Design PreviewType: CustomPattern: design-Match: Starts Withdesign-header,design-footerи т.д.- Отдельный domain для дизайнеров:
design.preview.example.com
API доступ
Заголовок раздела «API доступ»Управление окружениями и их переменными доступно через CLI:
# Список переменных окруженияnrz env list
# Установить переменную окруженияnrz env set <key> <value>
# Удалить переменную окруженияnrz env delete <key>
# Скачать переменные в .env.localnrz env pullСм. CLI Reference для подробностей.
Workflow: Development → Staging → Production
Заголовок раздела «Workflow: Development → Staging → Production»Типичный flow для команды с тремя окружениями:
1. Настройка окружений
Заголовок раздела «1. Настройка окружений»| Окружение | Branch Pattern | Match | Custom Domain |
|---|---|---|---|
| Production | main | (авто) | app.example.com |
| Staging | staging | Equals | staging.example.com |
| Preview | все остальные | (авто) | — |
2. Environment Variables по окружениям
Заголовок раздела «2. Environment Variables по окружениям»Задайте переменные с scope Selected для каждого окружения:
# Production (scope: Production)DATABASE_URL=postgres://prod-host/mydbAPI_URL=https://api.example.comLOG_LEVEL=warn
# Staging (scope: Staging)DATABASE_URL=postgres://staging-host/mydbAPI_URL=https://api.staging.example.comLOG_LEVEL=debug
# Preview (scope: Preview)DATABASE_URL=postgres://dev-host/mydbAPI_URL=https://api.dev.example.comLOG_LEVEL=debugОбщие переменные (одинаковые для всех) задайте с scope All Environments.
3. Flow разработки
Заголовок раздела «3. Flow разработки»feature branch → Preview деплой → Code review ↓ Merge в staging ↓ Staging деплой → QA тестирование ↓ Merge в main ↓ Production деплой (автоматический)4. Доступ к переменным в коде
Заголовок раздела «4. Доступ к переменным в коде»import { env } from '@onreza/runtime/env';
// Переменная автоматически соответствует текущему окружениюconst dbUrl = env.get('DATABASE_URL');// Production → postgres://prod-host/mydb// Staging → postgres://staging-host/mydb// Preview → postgres://dev-host/mydbRetry policy
Заголовок раздела «Retry policy»При ошибках сборки автоматически применяется политика повторных попыток. Настройки retry policy зависят от типа окружения и влияют на поведение билдов во всех деплоях.
Troubleshooting
Заголовок раздела «Troubleshooting»Деплой попал не в то окружение
Заголовок раздела «Деплой попал не в то окружение»- Проверьте Branch Pattern — возможно он слишком широкий
- Проверьте Match Type — Starts With vs Equals
- Проверьте приоритет — Custom окружения имеют приоритет
Environment Variables не применились
Заголовок раздела «Environment Variables не применились»- Проверьте Scope переменных — они могут быть не для этого окружения
- Убедитесь что деплой завершился после изменения
- Проверьте что переменная не переопределена на уровне Project
См. также
Заголовок раздела «См. также»- Environment Variables — переменные окружения
- KV Store — хранилище ключ-значение
- Custom Domains — настройка доменов
- Деплои — типы деплоев