Как лучше всего настроить промежуточные и производственные среды Git с отдельными базами данных?
У меня есть 2 филиала в Git - постановка и производство. Они развернуты на том же VPS, где есть одна производственная база данных и отдельная промежуточная база данных. Это позволяет нам внедрять новые функции, не влияя на производственную среду. Затем, когда мы будем готовы, мы копируем изменения базы данных от подготовки к производству.
Каков наилучший способ настроить это так, чтобы промежуточная ветвь имела отдельные учетные данные базы данных для производства? На данный момент кредиты базы данных хранятся в одном файле. Я думал об использовании gitignore, чтобы игнорировать этот файл в обеих ветвях и редактировать его вручную, чтобы он оставался различным в каждой ветке. Это лучшее, что можно сделать или есть лучший способ?
2 ответа
Мы используем каскадный подход:
- Настройки по умолчанию общие
config
" файл. - Для каждого этапа разработки у него есть свой файл конфигурации, например, у нас есть
config_prod
иconfig_dev
, - Каждый этап выполняется как отдельный (системный) пользователь, и для этого пользователя мы устанавливаем переменную среды
PROJ_SETTINGS
и укажите на файл, который нам нужно загрузить.
Затем код считывает значения по умолчанию, а затем переопределяет их тем, что доступно из ресурса, на который указывает переменная среды (если она существует).
Об установке этой переменной заботятся наши обычные сценарии devops/ автоматизации. У нас есть несколько преимуществ:
- Сохраняет всю конфигурацию под контролем версий.
- Легко переключать настройки без изменения источника.
Да, gitignoring файл database.yml - это подход, который я использовал в нескольких организациях.
Обычно мы храним файл database.yml.sample в системе контроля версий, чтобы было проще. Пользователи просто копируют это в database.yml и изменяют по мере необходимости.