2

我正在按照heisel.org 上描述的 hudson/python/virtualenv CI 解决方案的大纲进行操作,但是其中的一个步骤真的很烦人,这就是为 CI 运行创建的 virtualenv 的配置部分:

pip install -q -E ./ve -r requirements.pip
pip install -q -E ./ve -r requirements-test.pip

这需要大量的时间来运行,并且每次源文件更改时,我们最终都会重新下载相当于大量数据的数据。

是否可以在 Hudson 中创建模板工作区,以便签出到预先准备好的工作区,而不是签出到裸工作区?

4

3 回答 3

1

这里有几个选项:

  1. 在您的源存储库中有一个存档,该存档会爆炸到 virtualenv/pip 安装中。您需要使 virtualenv 起点可重定位。

  2. 使用任何适合的 SCM 选项以不清除构建之间的工作空间(例如,使用 svn update,或者不检查 Mercurial 的 Clean Build 选项)。然后将安装命令保留在您的构建脚本中,但将它们放在一个if语句中,以便它们仅在(例如).pip_installed文件不存在或设置了构建参数时运行。

  3. 你也许可以让Clone Workspace插件做你想做的事。但这是另一种 SCM,我猜你可能不想要它,因为 Hudson 不会从多个 SCM 中签出(有关解决此问题的一些想法,请参阅上一个问题)。

将 pip 配置设置为从本地缓存中提取包可能也是一个好主意。

pip -f http://localhost/packages/
于 2010-10-14T21:56:39.730 回答
0

增强功能是将 virtualenv 打包在一个由需求文件的哈希命名的存档中。如果自上次构建以来需求文件没有更改,只需将存档解压缩到一个空的 virtualenv 目录中。如果需求文件已更改,则存档将不存在,因此您运行 pip install 来构建环境,然后将其存储在新存档中。

于 2011-01-27T16:44:21.777 回答
0

如果您为每个工作区创建一个新的 venv,那么您实际上只需要在开始时安装所有的 deps,因此后续构建会更快。请参阅我的帖子以获取我为提供帮助而编写的脚本:

Python 的“漂亮”持续集成

于 2011-05-04T15:11:32.340 回答