是否可以为Hudson构建中的Virtualenv预先创建虚拟人?
-
30-09-2019 - |
题
我遵循哈德逊/python/virtualenv CI解决方案的轮廓 在heisel.org上进行了描述 但是,其中的一步确实是在搅动,这是仅为CI运行而创建的Virtualenv配置的部分:
pip install -q -E ./ve -r requirements.pip
pip install -q -E ./ve -r requirements-test.pip
这需要大量的时间来运行,每次源文件更改时,我们最终都会重新下载大量数据。
是否可以在哈德森(Hudson)中创建模板工作空间,以便将其签到一个裸露的工作区,而是签到预先准备的一个工作空间?
解决方案
这里有几个选择:
在源存储库中有一个存档,该存档库吹入Virtualenv/pip安装中。您需要使Virtualenv起点可重新定位。
使用任何SCM选项都不适合擦除构建之间的工作空间(例如使用SVN更新,或者不要检查Mercurial的清洁构建选项)。然后将安装命令保留在您的构建脚本中,但将它们放在
if
声明这样,因此只能运行(例如).pip_installed
文件不存在,或者如果设置了构建参数。您可能能够得到 克隆工作区 插件可以做您想做的。但这是另一种SCM,我猜您可能不想要它,因为哈德森不会从多个SCMS上检查(请参阅 以前的问题 有关解决此问题的一些想法)。
设置您的PIP配置以从本地的软件包中提取,这可能也是一个好主意。
pip -f http://localhost/packages/
其他提示
一个增强功能是将virtualenv打包在要求文件的哈希命名的档案中。如果需求文件自上次构建以来没有更改,则只需将存档提取到空的Virtualenv目录中即可。如果需求文件已更改,则将不存在存档,因此您运行PIP安装以构建环境,然后将其存储在新的存档中。
如果您为每个工作空间创建新的VENV,那么您只需要在开始时安装所有DEP,以便后续的构建速度要快得多。请参阅我的帖子以获取我写的脚本,以帮助:
不隶属于 StackOverflow