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

时间:2013-10-17 08:58:13

标签: python django travis-ci requirements.txt

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

正在努力减少测试的运行时间。然而,我想知道通过缓存或捆绑项目的要求,更大的加速是否是 up-for-grabs 。至于Plone似乎有some options,因为它使用了buildout。我也在看WAD。当然,在缓存需求时,需要在需求更新时使其失效。

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

3 个答案:

答案 0 :(得分: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

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

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

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

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

install:
  - pip install -r requirements.txt --download-cache $HOME/.pip-cache

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

答案 1 :(得分:9)

这些年来变得更加容易了。最新的方式是:

cache: pip

那就是它。

答案 2 :(得分:6)

点子7:

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

install:
  - pip install --upgrade pip
  - pip install -r requirements.txt --cache-dir $HOME/.pip-cache