将虚拟机映像创建为持续集成工件?

时间:2008-10-06 21:29:42

标签: continuous-integration hudson vmware virtualization

我目前正在开发一种服务器端产品,在新服务器上部署有点复杂,这使其成为在VM中进行测试的理想选择。我们已经在使用Hudson作为我们的CI系统,我真的希望能够使用最新最好的软件作为构建工件来部署虚拟机映像。

那么,一个人怎么做呢?为此目的推荐使用哪种VM软件?要完成这项工作需要多少脚本?在这里使用Windows 2003 Server作为操作系统时是否有任何问题?

8 个答案:

答案 0 :(得分:7)

很抱歉在这里拒绝任何人接受的答案,但基于进一步的研究(感谢您的答案!),我找到了一个更好的解决方案,并想总结一下我发现的答案。

首先,VirtualBox和VMWare Server都是很棒的产品,因为它们都是免费的,所以每个都值得评估。我们决定使用VMWare Server,因为它是一个更成熟的产品,我们可以根据需要获得支持。这一点尤其重要,因为我们还在考虑将我们的软件作为VM而不是特殊的服务器安装分发给客户端,假设VMWare Player的开销不是太高。此外,还有一个名为VIX的VMWare scripting interface可用于直接将文件安装到VM而无需安装SSH或SFTP,这是一个很大的优势。

所以我们的解决方案基本上如下......首先我们使用操作系统创建一个“vanilla”VM映像,然后将其检入存储库。然后,我们编写一个充当安装程序的脚本,将Hudson创建的工件放在VM上。此脚本应具有直接通过SFTP和VIX复制文件的接口。这将允许我们继续直接在目标机器上或通过我们选择的VM分发软件。然后将生成的图像压缩并作为CI服务器的工件进行分发。

答案 1 :(得分:1)

无论VM软件(我也推荐VirtualBox),我认为您正在考虑以下情况:

  1. 构建已完成
  2. CI启动虚拟机(或始终运行)
  3. CI使用scp / sftp通过网络将构建上传到VM
  4. CI使用ssh(如果在VM中运行的目标OS上可用)或其他远程命令执行工具来触发VM环境中的安装

答案 2 :(得分:1)

VMWare Server是免费的,是一款非常稳定的产品。它还使您能够在需要时创建VM片的快照并回滚到以前版本的虚拟机。它将在Win 2003上正常运行。

在为构建配置新VM片段方面,您只需复制并浏览包含VMWare文件的文件夹,更改新VM的SID和IP,即可拥有新计算机。需要15分钟,具体取决于VM切片的大小。无需编写脚本。

答案 3 :(得分:1)

如果你使用VirtualBox,你会想要看它运行它无头,因为它将在你的服务器上。通常,VirtualBox作为桌面应用程序运行,但可以从命令行启动VM并通过RDP访问虚拟机。

VBoxManage startvm "Windows 2003 Server" -type vrdp

答案 4 :(得分:1)

我们正在使用Jenkins + Vagrant + Chef来实现这种情况。

因此,您可以执行以下过程:

  • 版本使用vagrant配置脚本(Chef或Puppet)控制您的VM环境

  • 使用Jenkins / Hudson构建您的系统

  • 运行您的Vagrant脚本以从CI输出中获取最后一个稳定版本

  • 保存VM状态以便将来重用。

参考:

vagrantup.com

答案 5 :(得分:0)

我建议VirtualBox。它是免费的,并且具有明确定义的编程接口,但我没有亲自在自动构建情况下使用它。

答案 6 :(得分:0)

选择VMWare目前不是一个糟糕的选择。

然而, 就像VMWare支持VMWare服务器一样,SUN也支持VirtualBOX。

答案 7 :(得分:0)

您也可以使用VMWare Studio完成此任务,VMWare Studio也是免费的。 基本工作流程如下: 1.创建描述虚拟机的XML文件 2.使用studio创建shell。 3.使用VMWare服务器配置虚拟机。