我正在遵循hudson / python / virtualenv CI解决方案described at heisel.org的大纲,但是这一步真的很麻烦,而且这是为CI运行创建的virtualenv配置的部分:
pip install -q -E ./ve -r requirements.pip
pip install -q -E ./ve -r requirements-test.pip
这需要花费大量的时间来运行,每当源文件发生变化时,我们最终会重新下载相当于大量数据的内容。
是否可以在Hudson中创建模板工作区,以便检查到一个预先准备好的工作区而不是检查到裸工作区?
答案 0 :(得分:1)
以下是几个选项:
在您的源存储库中有一个存档,它会被炸毁 virtualenv / pip安装。您需要使virtualenv起点可重定位。
使用适合的SCM选项不擦除工作区
在构建之间(例如,使用svn更新,或者不检查Mercurial的Clean Build
选项)。然后在构建脚本中保留install命令,但将它们放入
在if
语句下,只有在.pip_installed
文件不存在或者设置了构建参数时才运行它们(例如)。
您或许可以获得Clone Workspace插件来执行操作 想。但这是一个替代的SCM,我猜你可能不会 希望Hudson不会从多个SCM中查看(请参阅this previous question了解有关解决此问题的一些想法)。
将pip配置设置为从中提取也可能是一个好主意 包的本地缓存。
pip -f http://localhost/packages/
答案 1 :(得分:0)
增强功能是将virtualenv打包到一个由需求文件的哈希命名的存档中。如果自上次构建后需求文件未更改,则只需将存档解压缩到空的virtualenv目录中。如果需求文件已更改,则存档将不存在,因此您运行pip install以构建环境,然后将其存储在新存档中。
答案 2 :(得分:0)
如果你为每个工作区创建一个新的venv,那么你只需要在开始时安装一次所有deps,这样后续构建就会快得多。请参阅我的帖子,了解我写的一个帮助的脚本: