Я пытаюсь настроить непрерывную интеграцию для моего проекта 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:
- [email protected]
on_success: never
on_failure: always
Проблема в том, что это не удастся, так как мои настройки local.py также дают пароль при подключении к базе данных, пользователь postgres на travis не имеет пароля:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'ledenbestand',
'USER': 'postgres',
**'PASSWORD': 'password',**
'HOST': 'localhost',
'PORT': '5432',
}
}
В документации на travis говорится следующее:
Если ваша локальная тестовая установка использует разные учетные данные или настройки для доступа к локальной тестовой базе данных, мы рекомендуем помещать эти параметры в базу данных.yml.travis в вашем репозитории и копировать это как часть вашей сборки:
before_script:
- cp config/database.yml.travis config/database.yml
Однако я не знаю, как это может работать, как эта строка кода может перезаписать мои настройки local.py?
Исправлено это, добавив оператор If в мой файл конфигурации:
if 'TRAVIS' in os.environ:'