python - 如何使用 ci.yml 声明要在 python 中使用的环境变量?
问题描述
-在 gitlab-ci.yml
variables:
SECRET_KEY: secret_key
DB_NAME: somedb_name
DB_USER: postgres
DB_HOST: mdillon-postgis
DB_PORT: 5432
DB_PASSWORD: ''
-在django中
DATABASES = {
'default': {
'ENGINE': 'django.contrib.gis.db.backends.postgis',
'NAME': os.getenv('DB_NAME'),
'USER': os.getenv('DB_USER'),
'PASSWORD': os.getenv('DB_PASSWORD'),
'HOST': os.getenv('DB_HOST'),
'PORT': os.getenv('DB_PORT'),
}
}
运行管道时,Django 似乎没有选择 CI 上声明的变量。如何在测试中正确声明 env 变量?
解决方案
任何人都有同样的困惑。以下是步骤:
- 转到设置 > CI/CD > 变量。添加变量和值:
DB_NAME: your_db_name
DB_USER: postgres
DB_HOST: mdillon-postgis (or whatever service you are using)
DB_PORT: 5432
DB_PASSWORD: <leave it blank>
- 在 gitlab-ci.yml
POSTGRES_DB: $DB_NAME
POSTGRES_USER: $DB_USER
POSTGRES_PASSWORD: $DB_PASSWORD
DATABASE_URL: postgres://postgres:@mdillon__postgis:5432/$DB_NAME
- 在 django 中
DATABASES = {
'default': {
'ENGINE': 'django.contrib.gis.db.backends.postgis',
'NAME': os.getenv('DB_NAME'),
'USER': os.getenv('DB_USER'),
'PASSWORD': os.getenv('DB_PASSWORD'),
'HOST': os.getenv('DB_HOST'),
'PORT': os.getenv('DB_PORT'),
}
}
推荐阅读
- c++ - 如何在eclipse中调试jsoncpp
- html - 什么 HTML 从浏览器复制并粘贴到 Word 中时会给出制表符?
- git - 使用 Gitlab Ci Cd 将文件添加到存储库
- angular - 如何通过间隔获得先前的结果?
- sum - 计算MySQL8中重复条目组的最大值和最小值之和
- javascript - 如何根据同一变量(OR 表达式)的两个可能值使用 ng-show?
- vb.net - 参数@Something 没有默认值(Access 数据库、Visual Studio VB.NET)
- node.js - npm 警告:建议升级到 3.2.7 或 4.3.1
- c++ - gRPC async_client 中的内存泄漏
- javascript - 导航到第三方 URL 而不使其在位置值中可用