【问题标题】:Is it possible to pre-create a virtualenv for use in hudson builds?是否可以预先创建一个用于 hudson 构建的 virtualenv?
【发布时间】:2010-10-14 20:52:16
【问题描述】:

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

【问题讨论】:

    标签: python continuous-integration hudson virtualenv pip


    【解决方案1】:

    这里有几个选项:

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

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

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

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

    pip -f http://localhost/packages/
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

        "Pretty" Continuous Integration for Python

        【讨论】:

          猜你喜欢
          • 2018-07-23
          • 2011-05-25
          • 2011-11-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-12-13
          • 2023-03-14
          • 1970-01-01
          相关资源
          最近更新 更多