Перейти к содержимому

Окружения

Окружение (Environment) — это конфигурация для определённого типа деплоев. Окружения позволяют иметь разные настройки для production и preview версий приложения.

Основное окружение для production версии приложения.

ХарактеристикаЗначение
ВеткаОсновная ветка (main, master)
URLProduction alias: project-workspace.onreza.app
Custom DomainsПоддерживаются
СоздаётсяАвтоматически при создании проекта

Окружение для preview деплоев — тестирования изменений до мержа. При деплое в preview окружение статус деплоя проходит через UPLOADING во время загрузки артефактов.

ХарактеристикаЗначение
ВеткиВсе ветки кроме main
URLBranch alias: project-git-branch-workspace.onreza.app
Custom DomainsНе поддерживаются
СоздаётсяАвтоматически при создании проекта

Пользовательские окружения для специфических сценариев.

ХарактеристикаЗначение
ВеткиНастраиваемый паттерн
URLЗависит от настройки
Custom DomainsПоддерживаются
СоздаётсяВручную

Примеры использования:

  • Staging — предрелизное тестирование
  • QA — окружение для QA команды
  • Demo — демо для клиентов
  1. Откройте настройки проекта

    Перейдите в проект → SettingsEnvironments

  2. Нажмите “Add Environment”

  3. Заполните форму

    ПолеОписание
    NameНазвание (например, “Staging”)
    TypeCustom
    Branch PatternПаттерн ветки
    Match TypeТип сопоставления
  4. Сохраните

Определяет какие ветки относятся к окружению.

ТипОписаниеПример паттернаСовпадает с
EqualsТочное совпадениеstagingтолько staging
Starts WithНачинается сrelease/release/1.0, release/2.0
Ends WithЗаканчивается на-prodfeature-prod, hotfix-prod
# Staging окружение
Pattern: staging
Match: Equals
→ Ветка 'staging' → Staging окружение
# Release окружения
Pattern: release/
Match: Starts With
→ Ветка 'release/1.0' → Custom окружение
# Hotfix в production
Pattern: hotfix-
Match: Starts With
→ Ветка 'hotfix-urgent' → Custom окружение

Каждое окружение может иметь свои переменные:

  1. Откройте SettingsEnvironment Variables
  2. При создании переменной выберите ScopeSelected
  3. Отметьте нужные окружения
  4. Сохраните

Пример:

Окно терминала
# Production
DATABASE_URL=postgres://prod-db/app
API_URL=https://api.example.com
# Preview
DATABASE_URL=postgres://staging-db/app
API_URL=https://api.staging.example.com
# Custom (Staging)
DATABASE_URL=postgres://staging-db/app
API_URL=https://api.staging.example.com

Production и Custom окружения могут иметь свои домены:

ОкружениеДомен
Productionapp.example.com
Staging (Custom)staging.app.example.com

Подробнее о доменах

Для каждого окружения можно настроить автодеплой:

  • Включён — webhook триггерит деплой при пуше в соответствующую ветку
  • Выключен — деплои только вручную
  1. Откройте SettingsEnvironments
  2. Выберите окружение
  3. Включите/выключите Auto Deploy
  4. Сохраните
  1. Откройте SettingsEnvironments
  2. Нажмите на окружение
  3. Измените настройки
  4. Сохраните
  1. Откройте SettingsEnvironments
  2. Найдите Custom окружение
  3. Нажмите удалить
  4. Подтвердите

Когда ветка подходит под несколько окружений, используется приоритет:

  1. Custom (с более специфичным паттерном)
  2. Production (для main ветки)
  3. Preview (для всех остальных)

Пример:

Ветка: staging
Окружения:
- Production (main) — не совпадает
- Preview (all except main) — совпадает
- Custom "Staging" (staging, Equals) — совпадает, более специфичный
→ Используется Custom "Staging"
Name: Staging
Type: Custom
Pattern: staging
Match: Equals
  • Отдельные environment variables
  • Отдельный custom domain: staging.example.com
  • Для финального тестирования перед production
Name: Release
Type: Custom
Pattern: release/
Match: Starts With
  • release/1.0, release/2.0 и т.д.
  • Для подготовки релизов
Name: Design Preview
Type: Custom
Pattern: design-
Match: Starts With
  • design-header, design-footer и т.д.
  • Отдельный domain для дизайнеров: design.preview.example.com

Управление окружениями и их переменными доступно через CLI:

Окно терминала
# Список переменных окружения
nrz env list
# Установить переменную окружения
nrz env set <key> <value>
# Удалить переменную окружения
nrz env delete <key>
# Скачать переменные в .env.local
nrz env pull

См. CLI Reference для подробностей.

Типичный flow для команды с тремя окружениями:

ОкружениеBranch PatternMatchCustom Domain
Productionmain(авто)app.example.com
StagingstagingEqualsstaging.example.com
Previewвсе остальные(авто)

Задайте переменные с scope Selected для каждого окружения:

Окно терминала
# Production (scope: Production)
DATABASE_URL=postgres://prod-host/mydb
API_URL=https://api.example.com
LOG_LEVEL=warn
# Staging (scope: Staging)
DATABASE_URL=postgres://staging-host/mydb
API_URL=https://api.staging.example.com
LOG_LEVEL=debug
# Preview (scope: Preview)
DATABASE_URL=postgres://dev-host/mydb
API_URL=https://api.dev.example.com
LOG_LEVEL=debug

Общие переменные (одинаковые для всех) задайте с scope All Environments.

feature branch → Preview деплой → Code review
Merge в staging
Staging деплой → QA тестирование
Merge в main
Production деплой (автоматический)
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/mydb

При ошибках сборки автоматически применяется политика повторных попыток. Настройки retry policy зависят от типа окружения и влияют на поведение билдов во всех деплоях.

  1. Проверьте Branch Pattern — возможно он слишком широкий
  2. Проверьте Match Type — Starts With vs Equals
  3. Проверьте приоритет — Custom окружения имеют приоритет
  1. Проверьте Scope переменных — они могут быть не для этого окружения
  2. Убедитесь что деплой завершился после изменения
  3. Проверьте что переменная не переопределена на уровне Project