我有一个Flask应用程序,其配置名为settings.py。我已将此文件放在.gitignore中,因为该项目是在公共回购中。 Travis-CI在我将测试添加到我的项目之前工作,即使settings.py在.gitignore中。将测试添加到项目后,构建开始失败,并显示以下输出:
Debugged import:
- 'settings' not found.
Original exception:
ImportError: No module named 'settings'
我的.travis.yml文件如下所示:
language: python
python:
- "3.4"
- "3.5"
# command to install dependencies
install:
- pip install -r requirements.txt
# command to run tests
script: python tests.py
这是否意味着为了使用travis-ci,我们必须在repo中包含所有必需的文件?或者有解决方法吗?可以找到GitHub上的回购here。
答案 0 :(得分:1)
@dirn关于使用默认settings.py
文件然后使用encrypted environment variables on Travis覆盖某些设置的评论是一个好主意,如果只有一些差异,那肯定是值得的。
但是,如果您不能打扰或者分解设置太复杂,您可以安装Ruby Travis command line client gem
,这对很多事情都很有用。
使用您计算机上的客户端,您可以使用Travis' file encryption feature加密整个settings.py
文件,然后提交加密版(其中包含.enc
}文件扩展名)到GitHub。只要您在.travis.yml
文件中添加正确的命令(例如before_install
步骤),Travis就可以在CI运行期间解密文件。详细说明在文件加密页面上。
答案 1 :(得分:0)
我在.travis.yml中做了一个技巧 在提交之后和Travis构建之前,创建一个被忽略的文件,如下所示:
before_install:
- cp .ignored.file.copy ignored.file
这样,构建将在没有实际gitignore-ed文件的情况下成功。