确保持续集成服务的“洁净系统”的有效途径

我们希望为我们的项目build立一个持续集成(CI)服务。 CI服务应该控制项目生命周期的所有方面,包括部署。

也就是说,我们希望CI代理在每次迭代时都要使用干净的系统(特别是Ubuntu服务器),在那里部署我们的项目并运行testing。

我们可能会从头开始编写CI服务,因为我们的生态系统非常不寻常。 问题是:如何有效地为每个CI迭代提供干净的平板系统?

项目部署安装了几个Debian软件包,configuration了几个nginx站点,还在系统范围内的某个实现语言特定的软件包pipe理器(LuaRocks)中安装了一些软件包。 没有什么更多的侵入(我相信)。 所以,能够快速build立一个干净的板块(在现代硬件上一分钟之内,更快 – 更好)比确保绝对的隔离和清洁更重要。

我看到了两种方法来实现我们所需要的:

  • 要么build立一个类似的监狱(如lxc,也许)。
  • 或者安装一些可以做快照的虚拟机,并使用它们。

但在这一点上,我没有足够的信息来决定。

你会build议什么? 任何其他选项? 任何特定的工具名称?

注意:CI服务将在Citrix XenServer来宾中运行。 如果价格合理,付费解决scheme是可以的。 (通常他们在这个领域是不合理的。)远程CI解决scheme不好。

    看看厨师/stream浪者 。 不知道它是否会足够快,但要看的东西。

    以防万一您不熟悉厨师,这是一个服务器,旨在允许简单的基于代码的服务器供应。 我build议看看其中一个networking广播。 Django厨师networking直播

    stream浪,veewee,厨师独奏和刀独奏的东西我认为这一个涵盖了大部分你想做的事情。

    Vagrant博客文章显示使用Vagrant快速设置服务器的博客文章。

    看看jenkins 。 它有插件,允许您在VMWare或VirtualBox或Amazon /桉树云中的虚拟机中运行构build。 对于在云中运行的虚拟机,您可以指定一个初始化脚本,您可以在其中执行安装软件包等步骤。

    我将使用虚拟机基础架构并创build一个基本模板,或者使用云作为@LarsKotthoffbuild议。 它很容易旋转起来,你可以确定你从哪里开始。

    但是,您最终需要在该虚拟机之外安排一些事情(安装机器,启动机器上的任何stream程)。 我想看看Jenkins是否有能力捕获脚本的输出以供日后检查。

    尽pipeJenkins作为一名CI服务器开始使用,但现在我所使用的许多组织现在都使用它,但它确实是一个可以手动或预定的工具,并捕获结果,并validation所发生的事情是否如预期的那样。 而且非常灵活。

    我们希望为我们的项目build立一个持续集成(CI)服务。 CI服务应该控制项目生命周期的所有方面,包括部署。

    jenkins已经被不less人提到过。 你可以通过脚本开始工作,但Jenkins将为你提供所有相同的灵活性,同时减less开销。

    也就是说,我们希望CI代理在每次迭代时都要使用干净的系统(特别是Ubuntu服务器),在那里部署我们的项目并运行testing。

    项目部署安装了几个Debian软件包,configuration了几个nginx站点,还在系统范围内的某个实现语言特定的软件包pipe理器(LuaRocks)中安装了一些软件包。 没有什么更多的侵入(我相信)。 所以,能够快速build立一个干净的板块(在现代硬件上一分钟之内,更快 – 更好)比确保绝对的隔离和清洁更重要。

    这是虚拟机映像派上用场的地方。 你可以设置你的干净的图像,并让每台机器启动一个分支。 原始图像从不修改,但您的testing将不知道区别。 你一定能够在一分钟内得到一个引导映像。

    如果价格合理,付费解决scheme是可以的。 (通常他们在这个领域是不合理的。) 远程CI解决scheme不好。

    如果你正在寻找一个运行多台机器,检查Nimbula (我正在无耻的,我为他们工作)。 对于较小的部署,它是免费的,可以让您将自己的私有云集中起来进行testing…或其他任何事情。 在Jenkins和一个编排文件之间,你可以启动主机服务器,testing客户机和其他东西,自动运行完整的testing代码,而不需要任何交互。