Как настроить Travis CI для проекта Django, размещенного на Heroku?

#django #heroku #travis-ci

#django #heroku #travis-ci

Вопрос:

Я пытаюсь настроить TravisCI в моем проекте Django.

Я использую Heroku, где классическим шаблоном является использование env var для получения URL базы данных postgres:

settings.py

 DEBUG = (os.environ['DJ_DEBUG'] == 'True')
import dj_database_url
DATABASES = {'default': dj_database_url.config(conn_max_age=500)}
  

пример файла .env для моего локального env

 DJ_DEBUG=True
DATABASE_URL=postgres://root:captainroot@127.0.0.1:5432/captaincook
  

Теперь вот мой .travis.файл yml conf, который пытается использовать локально созданную базу данных:

 language: python

python:
  - 3.5

addons:
  - postgresql: "9.5"

before_install:
  - export DJ_DEBUG=False
  - export DABATASE_URL=postgres://postgres@localhost/travisdb

install:
  - pip install -r requirements.txt

before_script:
  - psql -c "CREATE DATABASE travisdb;" -U postgres
  - python captaincook/manage.py migrate --noinput

env:
  - DJANGO=1.9.10

script: python captaincook/manage.py test --keepdb
  

Проект работает везде, за исключением развертывания на travis, где я получил эту ошибку Django:
django.core.exceptions.ImproperlyConfigured: settings.DATABASES is improperly configured. Please supply the ENGINE value. Check settings documentation for more details.

Есть идеи? Спасибо.

Ответ №1:

У вас опечатка: DABATASE_URL вместо DATABASE_URL .

Но я подозреваю, что вместо явного использования export в before_install , вам следует использовать env ключ:

 env:
  - DJ_DEBUG=False
  - DATABASE_URL=postgres://postgres@localhost/travisdb
  

Комментарии:

1. Спасибо, проблема была в опечатке! О env , это работает, но только там, где обе переменные записаны в одной строке, в противном случае travis CI создаст 2 сборки, каждая с одной переменной env.

2. Кстати, вы были там 3 года назад, когда я начал изучать Django, и все еще первый, кто ответил 3 года спустя 🙂 Ты безумно потрясающий 🙂

3. Если вы вложите переменные среды в global , вы сможете избежать матричных сборок: docs.travis-ci.com/user/environment-variables/#Global-Variables