2010-10-14 53 views
2

我正在关注的哈得逊/蟒蛇/ virtualenv中CI解决方案described at heisel.org但是这一步实在是擦伤的轮廓,而这也正是在virtualenv中,只为CI运行中创建,配置部分:是否可以预先创建一个用于哈德森版本的virtualenv?

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

这需要花费过多的时间来运行,每次源文件更改时,我们都会重新下载相当数量的数据。

是否有可能在Hudson中创建模板工作空间,以便不检出到裸露的工作空间,而是检出一个预先准备好的模板工作空间?

回答

1

这里有几个选项:

  1. 有在源存储库炸毁到 virtualenv中的存档/ PIP安装。您需要将virtualenv的起点重新定位。

  2. 使用任何SCM选项适用不抹出工作 之间建立(例如使用svn更新或不检查Mercurial的干净构建 选项)。然后将安装命令保留在构建脚本中,但将它们放在 的if语句下,以便仅在.pip_installed文件不存在的情况下运行(例如)或者设置了构建参数。

  3. 你可能会得到Clone Workspace插件来做你想要的东西 。但这是一种替代SCM,我猜你可能不需要 ,因为Hudson不会从多个SCM中检出(有关解决此问题的一些想法,请参阅this previous question)。

这可能也设置您的PIP配置从包的 本地缓存中拉好主意。

pip -f http://localhost/packages/ 
0

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

0

如果你为每个工作区创建一个新的venv,那么你只需要在开始时安装所有的deps,所以后续的构建要快得多。看我的帖子我写了一个脚本来帮助:

"Pretty" Continuous Integration for Python