Алгоритм генерации env.json у Unit
INFO
Алгоритм применяется в 3 сценариях:
Алгоритм
Алгоритм построен на приоритете следующих 4 представлений о env.json, чем меньше цифра, тем выше приоритет:
| Приоритет | Представление | Описание |
|---|---|---|
| 1 | Ручные | Ручной ввод Пользователя в систему с Frontend или через set_env через REST и GQL |
| 2 | Записанные в бд | env.json в базе данных Pepeunit |
| 3 | Cгенерированные | Стандартные переменные, сгенерированные Backend |
| 4 | Целевые | Переменные указанные Разработчиком Unit в env_example.json |
В конце работы, отсекаются все ключи которых нет в Целевых
INFO
Если генерируется env.json для отправки Unit или показа Пользователю, то будет дополнительно добавлена переменная PU_COMMIT_VERSION, в бд она не хранится.
Примеры работы Алгоритма
Первая генерация env
Шаги алгоритма:
Целевые- берутся целикомCгенерированные- заново генерируются Backend в полном объёме и перезаписывают ключи, которые были получены в результате предыдущего шагаЗаписанные в бд- отсутствуютРучные- отсутствуют- Все ключи которых нет в
Целевыхудаляются
INFO
В результате получится env.json, в котором поверх переменных Разработчика Unit, записаны переменные сгенерированные Pepeunit. Такой env.json уже пригоден для использования в Unit
Unit изменяет свою версию автоматически с иземенением состава ключей
Шаги алгоритма:
Целевые- берутся целикомCгенерированные- заново генерируются Backend в полном объёме и перезаписывают ключи, которые были получены в результате предыдущего шагаЗаписанные в бд- берутся из бд и перезаписывают все значения с совпадающими ключами, которые были получены в результате предыдущего шагаРучные- отсутствуют- Все ключи которых нет в
Целевыхудаляются
INFO
В результате получится env.json, у которого добавятся переменные из новой версии env_example.json созданной Разработчиком Unit
Пользователь вносит изменения в уже существующий env
Шаги алгоритма:
Целевые- берутся целикомCгенерированные- заново генерируются Backend в полном объёме и перезаписывают ключи, которые были получены в результате предыдущего шагаЗаписанные в бд- берутся из бд и перезаписывают все значения с совпадающими ключами, которые были получены в результате предыдущего шагаРучные- все полученные от Пользователя ключи перезаписывают ключи, которые были получены в результате предыдущего шага- Все ключи, которых нет в
Целевых, удаляются
INFO
В результате получится env.json, в котором поверх старых Пользовательских записаны новые переменные, в которые Пользователь внёс изменения