Как лучше всего настроить промежуточные и производственные среды Git с отдельными базами данных?

У меня есть 2 филиала в Git - постановка и производство. Они развернуты на том же VPS, где есть одна производственная база данных и отдельная промежуточная база данных. Это позволяет нам внедрять новые функции, не влияя на производственную среду. Затем, когда мы будем готовы, мы копируем изменения базы данных от подготовки к производству.

Каков наилучший способ настроить это так, чтобы промежуточная ветвь имела отдельные учетные данные базы данных для производства? На данный момент кредиты базы данных хранятся в одном файле. Я думал об использовании gitignore, чтобы игнорировать этот файл в обеих ветвях и редактировать его вручную, чтобы он оставался различным в каждой ветке. Это лучшее, что можно сделать или есть лучший способ?

2 ответа

Решение

Мы используем каскадный подход:

  1. Настройки по умолчанию общиеconfig" файл.
  2. Для каждого этапа разработки у него есть свой файл конфигурации, например, у нас есть config_prod и config_dev,
  3. Каждый этап выполняется как отдельный (системный) пользователь, и для этого пользователя мы устанавливаем переменную среды PROJ_SETTINGS и укажите на файл, который нам нужно загрузить.

Затем код считывает значения по умолчанию, а затем переопределяет их тем, что доступно из ресурса, на который указывает переменная среды (если она существует).

Об установке этой переменной заботятся наши обычные сценарии devops/ автоматизации. У нас есть несколько преимуществ:

  1. Сохраняет всю конфигурацию под контролем версий.
  2. Легко переключать настройки без изменения источника.

Да, gitignoring файл database.yml - это подход, который я использовал в нескольких организациях.

Обычно мы храним файл database.yml.sample в системе контроля версий, чтобы было проще. Пользователи просто копируют это в database.yml и изменяют по мере необходимости.

Другие вопросы по тегам