我遇到了一个问题,我不想在gitlab上提交我的.env文件,但在CI期间,我需要像这样的数据库配置值
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'test',
'USER': 'postgres',
'PASSWORD': '',
'HOST': 'postgres',
'PORT': '5432'
}
}
而我的文件在实际中
DATABASES = {
"default": {
"ENGINE": "django.db.backends.postgresql_psycopg2",
"NAME": config("DB_NAME"),
"USER": config("DB_USER"),
"PASSWORD": config("DB_PASSWORD"),
"HOST": config("DB_HOST"),
"PORT": config("DB_PORT", cast=int),
}
}
那么,将这些值分配给运行测试的可能方法是什么呢?在CI gitlab 中py
这里有几个选项。最明显的是使用GitLab的CI/CD环境变量。您也可以通过这种方式在作业中创建文件,而不仅仅是env变量。
您可以有一个模板.env
文件,并使用sed
对其进行编辑,以注入CI/CD env变量中的值(如果您不想创建.env文件类型变量(。
另一种方法是将配置值存储在像Hasicorp Vault这样安全的地方,并在作业中从Vault中检索机密。类似的事情可以通过将秘密存储在任何地方来实现,而不必是Vault。您可以将访问保险库的机密存储在屏蔽的CI/CD变量中。