Django 设置和 GitHub 操作秘密
Posted
技术标签:
【中文标题】Django 设置和 GitHub 操作秘密【英文标题】:Django Settings and GitHub Action Secrets 【发布时间】:2020-09-19 02:48:36 【问题描述】:我有一个 Django 项目,并且正在使用 Postgres 数据库。我想找到一种更简单的方法来在本地和 Github 上存储我的凭据,这样我就可以在这两个地方运行测试,但我的敏感信息都不在 git repo 中。
即使数据库只存在于我的计算机上(并且 Github 测试数据库在 GitHub 上一次只存在大约一分钟)我想为 SECRETS 使用可能的最佳实践,所以当我开始直播吧,我准备好了。
目前,我拥有的唯一敏感数据是数据库密码。以下是我将真实密码保存在 GitHub 之外的方法。
settings.py(在 Git 中):
VAR_1='abc'
VAR_2 = '123'
#DOES NOT INCLUDE DATABASE CONFIG
VAR_3 = 'efg'
# Add settings from local file into main settings
try:
from .localsettings import *
except ImportError:
import sys
print('localsettings not defined.')
localsettings.py(不在 Git 中):
DATABASES =
'default':
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'real-db-name',
'USER': 'real-user',
'PASSWORD': 'real-password',
'HOST': 'localhost',
'PORT': '',
testsettings.py(在 Git 中):
# import main settings and then overright certian values
try:
from .settings import *
except ImportError:
import sys
print('settings not defined.')
DATABASES =
'default':
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'github-db-name',
'USER': 'github-db-user',
'PASSWORD': 'github-user-password',
'HOST': 'localhost',
'PORT': '',
通过此设置,我可以在本地正常运行测试python manage.py test
但是当我在 Github 上运行它们时,我必须使用 python manage.py test --settings=path.to.testsettings
有没有一种方法可以像 GitHub 那样在本地存储机密,这样我就可以只拥有一个设置文件,它就可以在本地和 GitHub 上工作?
【问题讨论】:
【参考方案1】:我会考虑将秘密从环境变量传递给 Django 配置文件。 https://django-environ.readthedocs.io/en/latest/
然后您只需将带有秘密的 env 变量传递给在 Github 操作中运行的容器。
【讨论】:
以上是关于Django 设置和 GitHub 操作秘密的主要内容,如果未能解决你的问题,请参考以下文章
Django项目的创建与管理和pycharm与Github的秘密