【问题标题】:How to use Travis CI with some files in gitignore?如何将 Travis CI 与 gitignore 中的一些文件一起使用?
【发布时间】:2016-10-25 22:44:37
【问题描述】:

我有一个 Flask 应用,它的配置在一个名为 settings.py 的文件中。我已将此文件放在 .gitignore 中,因为该项目位于公共仓库中。即使 settings.py 在 .gitignore 中,在我将测试添加到我的项目之前,Travis-CI 就已经开始工作了。向项目添加测试后,构建开始失败,输出如下:

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上的repo可以在here找到。

【问题讨论】:

  • 这是非常特定于应用程序的。如果您需要设置模块来运行您的应用程序,那么是的,设置模块需要对 Travis 可用。您可以采取几种方法。我喜欢有一个settings.py,它提供默认值以及一种从环境变量之类的东西覆盖它们的方法。

标签: python flask travis-ci gitignore


【解决方案1】:

但是,如果您不介意或者破坏设置太复杂,您可以安装 Ruby Travis command line client gem,它对很多事情都很有用。

使用您机器上的客户端,您可以使用Travis' file encryption feature 加密整个settings.py 文件,然后将加密版本(将具有.enc 文件扩展名)提交到GitHub . Travis 将能够在 CI 运行期间解密该文件,只要您将正确的命令添加到 .travis.yml 文件,例如在 before_install 步骤中。文件加密页面有详细说明。

【讨论】:

  • 谢谢!我加密了整个文件,并通过在加密中使用--add 标志,它甚至为我自动更新了 .travis.yml 文件。
【解决方案2】:

我在 .travis.yml 中做了一个技巧 在提交之后和 Travis 构建之前,像这样创建被忽略的文件:

before_install:
- cp .ignored.file.copy ignored.file

这样,构建将在没有实际 gitignore-ed 文件的情况下成功。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-19
    • 2013-05-21
    • 1970-01-01
    • 1970-01-01
    • 2018-12-04
    • 1970-01-01
    • 1970-01-01
    • 2017-04-19
    相关资源
    最近更新 更多