我们希望为我们的项目建立持续集成(CI)服务. CI服务应该控制项目生命的所有方面,包括部署.
也就是说,我们希望每次迭代时CI代理都采用一个干净的系统(特别是Ubuntu Server),在那里部署我们的项目并运行测试.
我们可能会从头开始编写CI服务,因为我们的生态系统很不寻常.问题是:如何为每个CI迭代有效地提供干净的平板系统?
项目部署安装一些Debian软件包,配置几个Nginx站点,并在系统范围内的特定于实现语言的软件包管理器(LuaRocks)中安装一些软件包.没有比这更具侵入性(我相信).因此,能够快速设置(在现代硬件上的一分钟内,更快 – 更好)比确保绝对隔离和清洁更重要.
我看到了如何做我们需要的两种方式:
>要么设置某种监狱(如lxc,也许).
>或者安装一些可以执行快照的虚拟机,并使用它们.
但在这一点上,我没有足够的信息来决定.
你有什么建议吗?还有其他选择吗?任何具体的工具名称?
注意:CI服务将在Citrix XenServer来宾中运行.如果价格合理,付费解决方案也可以. (通常它们在这个领域是不合理的.)远程CI解决方案不行.
看看
Chef / Vagrant.不确定它是否足够快,但需要考虑一下.
如果您不熟悉Chef,它是一个服务器,旨在允许基于代码的简单服务器配置.我建议看看其中一个网络广播. Django Chef Webcast
Vagrant,veewee,chef-solo & knife-solo stuff我认为这个涵盖了你想要做的大部分内容.
Vagrant Blog post显示使用Vagrant快速设置服务器的博客文章.