首页 > 解决方案 > 如果发布到分支,则更改某些变量的最佳实践

问题描述

我使用 Django 开发自定义文档管理系统。

目前在带有数据库的 IIS + Hyper-V 上有一个生产环境,我们称之为生产数据库。

新功能在不同的分支中本地实现,使用另一个数据库,我们称之为一个stagingDB

当我在新分支上本地工作时,我必须在我的settings.py中将数据库配置和凭据从生产数据库调整为stagingDB - 此外,我将调试模式设置为 True。当我提交更改并合并到 master 时,有时我会忘记调整设置,这就是我的问题开始的地方:

处理这种“注意力不集中”的最佳做法是什么?当然,我可以为暂存环境调整本地设置,反之亦然以用于生产设置,但是我必须在上述文件中添加新设置,因此我必须提交编辑后的 ​​settings.py。

GitLab 或 git 中是否有“内置”方式来标记特定变量并根据它们所在的分支更改它们?比如:如果 branch=master 然后在 CI/CD 管道运行之前设置 DEBUG=FALSE, DATABASE=productiveDB 还是我必须坚持使用自定义脚本?

标签: djangogitmergegitlabcontinuous-integration

解决方案


我建议添加一个环境变量来区分不同的环境settings.py。例子:

# settings.py

import os

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

第二个选项是为每个环境创建多个设置文件。查看这篇文章以获得详细的解释。


推荐阅读