Лучшая практика для изменения определенных переменных при публикации в ветке
Я работаю над пользовательской системой управления документацией с помощью 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 = {
...
}
Второй вариант - создать несколько файлов настроек для каждой среды. Посмотрите эту статью для подробного объяснения.