我正在尝试为我的django项目设置持续集成。由于我使用postgresql als我的数据库,我想在travis中设置相同的。这是我的travis.yml文件:
language: python
services:
- postgresql
python:
- 3.4
env:
- DJANGO=1.8 DB=postgres
before_install:
- export DJANGO_SETTINGS_MODULE=ledenbestand.settings.local
install:
- pip install -r travis/requirements.txt
before_script:
- psql -c 'create database ledenbestand;' -U postgres
script:
- python manage.py test
notifications:
email:
recipients:
- random@email.com
on_success: never
on_failure: always
问题是这会失败,因为我的local.py设置在连接到数据库时也提供了密码,travis上的postgres用户没有密码:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'ledenbestand',
'USER': 'postgres',
**'PASSWORD': 'password',**
'HOST': 'localhost',
'PORT': '5432',
}
}
travis文档说明如下:
如果您的本地测试设置使用不同的凭据或设置来访问本地测试数据库,我们建议您将这些设置放在存储库中的database.yml.travis中,并将其作为构建的一部分进行复制:
before_script:
- cp config/database.yml.travis config/database.yml
但我不知道这是如何工作的,这行代码如何覆盖我的local.py设置?
答案 0 :(得分:2)
通过在我的配置文件中添加If语句来修复此问题:
if 'TRAVIS' in os.environ:`