Skip to content

Алгоритм генерации env.json у Unit

INFO

Алгоритм применяется в 3 сценариях:

  1. Получение env.json через get_env
  2. Установка env.json через set_env
  3. Любом обновлении программы Unit: ручном или автоматическом

Алгоритм

Алгоритм построен на приоритете следующих 4 представлений о env.json, чем меньше цифра, тем выше приоритет:

ПриоритетПредставлениеОписание
1РучныеРучной ввод Пользователя в систему с Frontend или через set_env через REST и GQL
2Записанные в бдenv.json в базе данных Pepeunit
3CгенерированныеСтандартные переменные, сгенерированные Backend
4ЦелевыеПеременные указанные Разработчиком Unit в env_example.json

В конце работы, отсекаются все ключи которых нет в Целевых

INFO

Если генерируется env.json для отправки Unit или показа Пользователю, то будет дополнительно добавлена переменная PU_COMMIT_VERSION, в бд она не хранится.

Примеры работы Алгоритма

Первая генерация env

Шаги алгоритма:

  1. Целевые - берутся целиком
  2. Cгенерированные - заново генерируются Backend в полном объёме и перезаписывают ключи, которые были получены в результате предыдущего шага
  3. Записанные в бд - отсутствуют
  4. Ручные - отсутствуют
  5. Все ключи которых нет в Целевых удаляются

INFO

В результате получится env.json, в котором поверх переменных Разработчика Unit, записаны переменные сгенерированные Pepeunit. Такой env.json уже пригоден для использования в Unit

Unit изменяет свою версию автоматически с иземенением состава ключей

Шаги алгоритма:

  1. Целевые - берутся целиком
  2. Cгенерированные - заново генерируются Backend в полном объёме и перезаписывают ключи, которые были получены в результате предыдущего шага
  3. Записанные в бд - берутся из бд и перезаписывают все значения с совпадающими ключами, которые были получены в результате предыдущего шага
  4. Ручные - отсутствуют
  5. Все ключи которых нет в Целевых удаляются

INFO

В результате получится env.json, у которого добавятся переменные из новой версии env_example.json созданной Разработчиком Unit

Пользователь вносит изменения в уже существующий env

Шаги алгоритма:

  1. Целевые - берутся целиком
  2. Cгенерированные - заново генерируются Backend в полном объёме и перезаписывают ключи, которые были получены в результате предыдущего шага
  3. Записанные в бд - берутся из бд и перезаписывают все значения с совпадающими ключами, которые были получены в результате предыдущего шага
  4. Ручные - все полученные от Пользователя ключи перезаписывают ключи, которые были получены в результате предыдущего шага
  5. Все ключи, которых нет в Целевых, удаляются

INFO

В результате получится env.json, в котором поверх старых Пользовательских записаны новые переменные, в которые Пользователь внёс изменения