Лучшая практика для изменения определенных переменных при публикации в ветке

Я работаю над пользовательской системой управления документацией с помощью Django.

В настоящее время есть продуктивный envoirment на IIS + Hyper-V с базой данных, назовем его productiveDB.

Новые возможности реализуются локально в разных филиалах, используя другую базу данных, назовем ее stagingDB.

Когда я работаю локально над новой веткой, мне приходится изменять конфигурацию базы данных и учетные данные с productiveDB на stagingDB в моем settings.py - кроме того, я устанавливаю режим DEBUG на True. Когда я фиксирую свои изменения и сливаюсь в master, я иногда забываю настроить параметры, и именно здесь начинается мой вопрос:

Как лучше всего справиться с этой "невнимательностью"? Конечно, я мог бы сохранить локальные настройки, скорректированные для staging envoirment, и наоборот, для продуктивных настроек, но здесь и потом мне придется добавлять новые настройки в упомянутый файл, и поэтому мне придется зафиксировать отредактированный settings.py.

Существует ли в GitLab или git "встроенный" способ пометить определенные переменные и изменить их в зависимости от ветки, в которой они находятся? Например: если branch=master, то установить DEBUG=FALSE, DATABASE=productiveDB до того, как будет запущен CI/CD конвейер, или я должен придерживаться пользовательского скрипта?

Я предлагаю добавить к settings.py одну переменную окружения для различения различных окружений. Пример:

# settings.py

import os

environment = os.environ.get("ENVIRONMENT", "DEVELOPMENT").lower()
if environment == "production":
    DATABASES = {
        ...
    }
else:
    DATABASES = {
        ...
    }

Второй вариант - создать несколько файлов настроек для каждой среды. Посмотрите эту статью для подробного объяснения.

Вернуться на верх