有没有可能预先创建一个virtualenv来在hudson构建中使用?

2024-10-01 02:39:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我遵循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中创建模板工作区,这样就可以签出到预先准备好的工作区中,而不是签出到裸工作区中?在


Tags: installpiporgtestcivirtualenv时间ve
3条回答

如果您为每个工作区创建一个新的venv,那么您只需要在beginging安装一次所有的dep,这样后续的构建会更快。请参阅我的帖子,以获取我为帮助编写的脚本:

"Pretty" Continuous Integration for Python

以下是几个选项:

  1. 在您的源存储库中有一个归档文件,它会扩展到 virtualenv/pip安装。您需要使virtualenv的起点可重新定位。

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

  3. 你可以让Clone Workspace插件来做你想做的事情 想要。但这是一种替代的SCM,我猜你可能没有 想要,因为Hudson不会从多个scm签出(关于解决这个问题的一些想法,请参见this previous question)。

将pip配置设置为从 包的本地缓存。在

pip -f http://localhost/packages/

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

相关问题 更多 >