如何在构建多平台应用时使用Hudson

8

现在我们正在为Win32平台构建许多C++应用程序。我们将很快移植到Linux,然后可能会有更多(32位和64位)。

现在的最佳实践是什么?您会使用每个自己平台上的多个Hudson服务器进行构建,还是Hudson服务会创建VM并进行构建?

对我来说,最好的实际方法不太清楚。

理想情况下,我只需要一个拥有一堆运行Hudson的VM的盒子,然后如果需要,它就会启动构建。

有没有资源可以指导我完成这个过程?

4个回答

5
我们使用Hudson来管理多个操作系统的C/C++(GNU C,GNU C++,Watcom C)构建。对于我们来说,软件是为Linux,Linux x64,QNX 4和QNX6构建的。我们的设置如下:
  • 1个VM用于运行Windows的Hudson服务器
  • 4个VM,每个VM都有一个从机类型,因此我有4个Hudson从机 - 每个系统类型各1个,分别为QNX4,QNX6和Linux 32和Linux 64。它们都在同一台服务器上运行,只是作为不同的VM,我们没有遇到任何问题。我们构建了大约100个项目,几乎平均分配给这4种系统类型。
您不需要任何额外的硬件。有一个Hudson插件可以与VMWare VM一起使用,以根据需要启动它们并关闭它们。
希望这可以帮助您。

我从零开始建立了我们的系统,所以我知道这需要时间,但并不难。我刚刚意识到你的问题是去年发布的。你有让任何东西运行起来吗? - Sagar
1
你有设置反向的任何提示吗?当前系统是Linux,其他构建需要在Windows下运行。 - Mahdi Yusuf
这很容易。我刚把我的Hudson服务器迁移到了Linux,并使用它来管理所有的构建从机。 Hudson可以使用Windows服务控制Windows从机。当您设置它以使用新节点(从机)时,您可以选择如何连接从机。只需选择“Windows服务”即可。这非常简单明了。 - Sagar

2
我从未使用过Hudson来编写C++代码,但是针对你的计划,你可以考虑查看VMWare插件,看看它是否能够实现你想要的功能。如果可能的话,我建议只有一个Hudson主机。你最有可能想做的是设置一个VMWare虚拟机镜像,在每个目标环境中都运行一个Hudson Slave进程,然后在该Slave中生成构建。

那是理想的目标,但我不确定那有多实际。我想我只需要试着玩一下它。 - Tim

2

我在一年多以前曾在多个平台环境下使用过Hudson。我在某台机器上设置了一个Hudson服务器(非常容易设置),并为每个平台单独设置了构建代理。我记得有一段时间其中一个构建客户端是在托管Hudson服务器的机器上的VirtualBox中运行的。(我想我也曾经将服务器放在虚拟机上。)我不记得这个设置有任何原则性问题。

然而,如果您想要在同一物理机器上有多个虚拟构建机器,则需要非常强大的机器。C++编译需要相当多的资源,并且据我所知,当Hudson开始构建时,它会同时在所有平台上启动构建。


是的 - 我意识到我们可能需要多台机器,如果是这样的话,每个平台上运行hudson可能更简单,尽管这很愚蠢。理想情况下,我希望一个hudson服务器触发每个从节点。我想我只能咬紧牙关购买额外的硬件了。 - Tim
1
Tim,你只需要一个Hudson服务器,而不是每个平台都需要一个。但是你需要每个平台一个构建从属。你可以使用虚拟机测试这一点,直到你认为它有效为止,但最终,如果你在同一物理机器上构建三个平台的VM,你可能不会享受CI。 - sbi
2
了解这一点非常重要,您只需要一个Hudson服务器。您可以通过在适当的架构上安装从机来完成其他所有操作。(* 对于合理的解释) - Jim T

1
请注意正在运行 Hudson 的服务器与编译软件应用程序的从机之间可能没有任何关系。通过 Java 的魔力,您可以使用 JNLP 将不同的从机连接到主机。(一个例子) 因此,无论它们是物理机还是虚拟机,您都可以将其中一个运行 Windows,另一个运行 Linux;其中一个是 32 位,另一个是 64 位等 - 无论您的应用程序需要什么。只要它们都安装了 JRE,它们就可以连接到 Hudson 主机并报告构建状态。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接