【问题标题】:How to setup Travis CI for a Django project hosted on Heroku?如何为 Heroku 上托管的 Django 项目设置 Travis CI?
【发布时间】:2017-03-02 14:17:46
【问题描述】:

我正在尝试在我的 Django 项目中设置 TravisCI。

我正在使用 Heroku,其中一个经典模式是使用 env var 获取 postgres 数据库 URL:

settings.py

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

本地环境的 .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.

有什么想法吗?谢谢。

【问题讨论】:

    标签: django heroku travis-ci


    【解决方案1】:

    您有一个错字:DABATASE_URL 而不是 DATABASE_URL

    但我怀疑,与其在before_install 中明确使用导出,不如使用env key

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

    【讨论】:

    • 谢谢,错字是问题所在!关于env,它可以工作,但只有两个变量都写在一行上,否则 travis CI 将创建 2 个构建,每个构建都有一个 env 变量。
    • 对了,3 年前我开始学习 Django 的时候你就在那儿,3 年后仍然是第一个回答的人 :) 你太棒了 :)
    • 如果在global下嵌套环境变量,可以避免矩阵构建:docs.travis-ci.com/user/environment-variables/#Global-Variables
    猜你喜欢
    • 2014-05-08
    • 1970-01-01
    • 2013-11-05
    • 2013-10-25
    • 2020-06-21
    • 2014-09-26
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    相关资源
    最近更新 更多