如何在Travis-CI上缓存Django项目的需求?

mam*_*nko 17 python django travis-ci requirements.txt

随着Travis-CI不断发展和扩展其功能集,它自然会变得更好,更好用.我最近阅读了这篇关于"加速构建"的文章.我工作的Django项目的构建需要大约25-30分钟.这段时间的近一半用于创建virtualenv,即安装项目的要求.另一半时间用于实际测试运行.

正在努力减少测试的运行时间.然而,我在想,一个更大的加速是否达到换争夺的缓存或捆绑项目的要求.至于Plone,似乎有一些选项,因为它使用buildout.我也在看WAD.当然,在缓存需求时,需要在需求更新时使其失效.

有没有人通过缩短设置时间为(Django)项目提高任何Travis构建速度?

小智 19

更新现在这是Travis的一流功能:http://blog.travis-ci.com/2013-12-05-speed-up-your-builds-cache-your-dependencies/

我刚刚玩这个,看起来你可以像这样缓存virtualenv site-packages(更新你的python版本的路径):

cache:
  directories:
    - /home/travis/virtualenv/python2.7/lib/python2.7/site-packages
Run Code Online (Sandbox Code Playgroud)

有一个小问题,它没有缓存binsrc目录.我尝试缓存整个virtualenv目录,但是我通过git安装到src目录中的依赖项出现了奇怪的错误.

您仍然存在使旧要求无效的问题.如果从需求中删除某些内容,它将保留在virtualenv中,因此您必须使用pip(pip remove foo)显式删除它,或者等到Travis创建API以使缓存无效...

另一个选项是使用--download-cachepip选项,然后将该目录添加到缓存中:

cache:
  directories:
    - $HOME/.pip-cache/

install:
  - pip install -r requirements.txt --download-cache $HOME/.pip-cache
Run Code Online (Sandbox Code Playgroud)

这将使下载速度更快,但仍然需要编译和安装所有要求!

  • 您还可以将"PIP_DOWNLOAD_CACHE = $ HOME/.pip-cache"附加到.travis.yml中的"env"行(而不是pip命令行上的--download-cache),这将由任何tox-run继承pip命令也是如此. (4认同)
  • 谢谢!使用--download-cache进行pip安装对我来说非常有用; 建造时间从15米到3米:) (2认同)

mli*_*ner 10

多年来,这变得更加容易.最新的方式是:

cache: pip
Run Code Online (Sandbox Code Playgroud)

而已.


小智 6

点子7:

cache:
  directories:
    - $HOME/.pip-cache/

install:
  - pip install --upgrade pip
  - pip install -r requirements.txt --cache-dir $HOME/.pip-cache
Run Code Online (Sandbox Code Playgroud)