django - 如果发布到分支,则更改某些变量的最佳实践
问题描述
我使用 Django 开发自定义文档管理系统。
目前在带有数据库的 IIS + Hyper-V 上有一个生产环境,我们称之为生产数据库。
新功能在不同的分支中本地实现,使用另一个数据库,我们称之为一个stagingDB。
当我在新分支上本地工作时,我必须在我的settings.py中将数据库配置和凭据从生产数据库调整为stagingDB - 此外,我将调试模式设置为 True。当我提交更改并合并到 master 时,有时我会忘记调整设置,这就是我的问题开始的地方:
处理这种“注意力不集中”的最佳做法是什么?当然,我可以为暂存环境调整本地设置,反之亦然以用于生产设置,但是我必须在上述文件中添加新设置,因此我必须提交编辑后的 settings.py。
GitLab 或 git 中是否有“内置”方式来标记特定变量并根据它们所在的分支更改它们?比如:如果 branch=master 然后在 CI/CD 管道运行之前设置 DEBUG=FALSE, DATABASE=productiveDB 还是我必须坚持使用自定义脚本?
解决方案
我建议添加一个环境变量来区分不同的环境settings.py
。例子:
# settings.py
import os
environment = os.environ.get("ENVIRONMENT", "DEVELOPMENT").lower()
if environment == "production":
DATABASES = {
...
}
else:
DATABASES = {
...
}
第二个选项是为每个环境创建多个设置文件。查看这篇文章以获得详细的解释。
推荐阅读
- php - 有没有办法在 LIVE 托管/生产服务器上记录我的错误?
- jquery - Psuedo-Element Triangle During JQuery Slide
- oracle - 如何在不将密钥传递给 Oracle 服务器的情况下加密 Oracle 中的列?
- rest - 如何在 Mendix 中使用 REST API 身份验证?
- c# - ViewModel 中的 Properties.Settings.Default.Save() 是否可行?
- javascript - setState 不执行回调
- java - JLabel 等组件中 html 的默认样式是什么
- r - 创建 RStudio 项目时 .rprofile 不是源
- c# - 如何在 C# 中获取存储过程的第一行?
- .net - Azure 功能毒物队列会使整个作业功能崩溃吗?