11

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

那么,究竟是如何做到这一点的呢?为此建议使用什么 VM 软件?需要编写多少脚本才能完成此任务?在这里使用 Windows 2003 Server 作为操作系统时有什么问题吗?

4

8 回答 8

7

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

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

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

于 2008-10-09T07:31:38.320 回答
1

无论使用哪种 VM 软件(我也可以推荐 VirtualBox),我认为您正在查看以下场景:

  1. 构建完成
  2. CI 启动虚拟机(或者它一直在运行)
  3. CI 使用 scp/sftp 通过网络将构建上传到 VM
  4. CI 使用 ssh(如果在 VM 中运行的目标操作系统上可用)或其他远程命令执行工具来触发在 VM 环境中的安装
于 2008-10-06T21:59:47.773 回答
1

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

在为您的构建配置新的 VM 片方面,您可以简单地复制并粘贴包含 VMWare 文件的文件夹,更改新 VM 的 SID 和 IP,然后您就拥有了一台新机器。需要 15 分钟,具体取决于 VM 切片的大小。无需编写脚本。

于 2008-10-06T22:17:20.060 回答
1

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

VBoxManage startvm "Windows 2003 Server" -type vrdp
于 2008-10-07T21:30:54.303 回答
1

我们在这个场景中使用 Jenkins + Vagrant + Chef。

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

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

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

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

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

参考:

vagrantup.com

于 2012-11-08T18:56:21.570 回答
0

我会推荐VirtualBox。它是免费的并且有一个定义良好的编程接口,尽管我个人没有在自动构建的情况下使用它。

于 2008-10-06T21:41:51.803 回答
0

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

但是,就像VMWare 支持VMWare 服务器一样,SUN 也支持VirtualBOX。

于 2008-10-09T07:48:01.577 回答
0

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

于 2009-06-18T17:20:26.990 回答