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

Окружения

Окружение (Environment) — это именованная цель деплоя со своими настройками и стабильным адресом. Новая версия приложения обновляет то же окружение; имя Git-ветки само по себе не создаёт окружение или адрес.

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

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

Сохранённое окружение для тестирования изменений до мержа. Чтобы автоматически деплоить ветку в Preview, включите Auto Deploy и задайте явный шаблон ветки, например Equals → preview. Для независимых тестовых версий создайте отдельные Custom окружения.

Характеристика Значение
Ветки Явно настроенный паттерн
URL Стабильный адрес окружения, показанный в панели
Custom Domains Поддерживаются
Создаётся Сохранено у существующих проектов; для новых тестовых целей создайте Custom

Сохранённое системное окружение для development scope. Используется для development-переменных и runtime-конфигурации, но не является отдельной веткой автодеплоя.

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

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

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

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

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

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

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

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

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

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

Тип Описание Пример паттерна Совпадает с
Equals Точное совпадение staging только staging
Starts With Начинается с release/ release/1.0, release/2.0
Ends With Заканчивается на -prod feature-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. Откройте Settings → Environment Variables
  2. При создании переменной выберите Scope → Selected
  3. Отметьте нужные окружения
  4. Сохраните

Пример без конфликтующих overrides:

Окно терминала
# All environments
PUBLIC_API_URL=https://api.example.com
# Preview only
PREVIEW_BANNER=true

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

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

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

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

  • Включён — webhook триггерит деплой при пуше в соответствующую ветку
  • Выключен — деплои только вручную
  1. Откройте Settings → Environments
  2. Выберите окружение
  3. Включите/выключите Auto Deploy
  4. Для Preview или Custom при включении укажите Match Type и непустой Branch Pattern
  5. Сохраните
  1. Откройте Settings → Environments
  2. Нажмите на окружение
  3. Измените настройки
  4. Сохраните
  1. Откройте Settings → Environments
  2. Найдите Custom окружение
  3. Нажмите удалить
  4. Подтвердите

Push в основную ветку направляется в Production. Для остальных веток ONREZA ищет включённое Preview или Custom окружение с совпадающим шаблоном.

  • Один совпадающий шаблон — деплой в указанное окружение.
  • Несколько совпадений — неоднозначная настройка; измените шаблоны.
  • Нет совпадений — деплой не создаётся. Пустой шаблон Preview не означает «все ветки».

Для ветки preview настройте Preview: Auto Deploy включён, Match Type — Equals, Branch Pattern — preview. Для отдельной ветки staging создайте Custom окружение с Equals → 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 --environment preview
# Установить plain value
nrz env set PUBLIC_API_URL --value https://api.example.com --plain --all
# Установить secret без shell history
printf %s "$API_TOKEN" | nrz env set API_TOKEN --stdin --secret --environment preview
# Запустить локальную команду с materialized context без dotenv
nrz env exec --environment preview -- npm run dev
# Удалить project-wide definition
nrz env delete API_TOKEN --all

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

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

Окружение Branch Pattern Match Custom Domain
Production main (авто) app.example.com
Staging staging Equals staging.example.com
Preview preview Equals —

Задайте общие values с scope All Environments, а Environment-specific keys с scope Selected. До environment-first migration не создавайте разные values одного key для разных окружений:

Окно терминала
# All Environments
API_URL=https://api.example.com
# Staging only
STAGING_FEATURE_GATE=true
# Preview only
PREVIEW_BANNER=true
feature branch → Preview деплой → Code review
↓
Merge в staging
↓
Staging деплой → QA тестирование
↓
Merge в main
↓
Production деплой (автоматический)
// Переменная автоматически соответствует текущему окружению
const dbUrl = process.env.DATABASE_URL;
// Value comes from the immutable Deployment Environment snapshot.
  1. Проверьте Branch Pattern — возможно он слишком широкий
  2. Проверьте Match Type — Starts With vs Equals
  3. Проверьте приоритет — Custom окружения имеют приоритет
  1. Проверьте Scope переменных — они могут быть не для этого окружения
  2. Убедитесь что деплой завершился после изменения
  3. Проверьте что переменная не переопределена на уровне Project