在多个主机上进行编译

时间:2008-09-18 07:12:58

标签: build-process build-automation

假设您正在开发需要在多个主机(例如Linux和Windows)上编译和运行的代码,您将如何以最有效的方式执行此操作:

  • 您可以完全访问您正在编译的每个主机的硬件(在我的情况下是Linux主机和站在我桌面上的Windows主机)。
  • 构建网络驱动器太贵了
  • 不应该要求提交到中央存储库 - 假设有一个CI引擎在检入任何内容后立即尝试构建

“高效”意味着保持编译编辑运行周期尽可能简短。

9 个答案:

答案 0 :(得分:3)

我能推荐的最好的东西是一个名为“BuildBot”的超级平台项目。

每次在源控制系统中检查新版本时,BuildBot都会自动在您支持的每个平台上进行构建。它是基于OSX,Linux(ubuntu),Linux(debian),Linux(Redhat),Vista,Windows XP等构建的,并且在构建失败时发送电子邮件或者您喜欢的任何内容。

作为构建过程的一部分,如果测试通过,您可以发布二进制文件。适用于“夜间”或“流血边缘”构建。

这是一些网址:

  • Buildbot.net 主页
  • Python.org的 buildbot

答案 1 :(得分:1)

我们发现Hudson是一个很棒的CI服务器,可以根据需要从源代码控制执行构建。由于它是用Java编写的,因此它可以在您选择的目标平台上运行,并且由于界面是基于Web的,您可以从任何地方控制它。有插件可以做你想做的大部分事情,最重要的是它是免费的!

答案 2 :(得分:1)

其他答案中提到的大多数构建服务器都会从版本控制系统中检出您的更改。鉴于您的“不需要提交中央存储库”要求,我建议您尝试使用Jetbrains TeamCity CI服务器。

它有Visual Studio和Eclipse的插件,允许您请求“private build”,将您的更改直接发送到构建服务器。对于每个项目,您可以定义具有不同要求的许多构建配置(OS是可能的要求之一)。如果构建成功,插件将提示您提交更改。

免费版本支持3个代理商,如果需要,您可以购买更多代理商。

看起来Pulse也有same feature,但我没有第一手经验。

答案 3 :(得分:0)

选择一台计算机作为开发框。

将另一个设置为定期自动更新源控件(每小时/每天/无论如何)。任何构建/测试失败都应该向您发送某种警告消息。 (电子邮件,即时通讯,等等)。您的非开发框仍然在本地构建,因为它有自己的树副本。

在真正发布之前,您仍然希望进行人体测试。但这可以让剩下的时间保持正常生活。

答案 4 :(得分:0)

为此类任务构建简单的设置非常简单 我建议Cygwin在Windows平台上使用。这样,您就可以为Linux和Windows平台编写完全可移植的软件/ scrips。你不清楚你在哪个项目阶段发布,但假设你只是开始我将建议使用make来构建你的软件。您可以使用cron为结帐/构建圈子安排频率。如果破坏,您甚至可以发送带有构建日志的电子邮件 有很多商业和开源的日常构建测试,你可以谷歌为它或可能有人会在这里添加建议。
我们正在使用本土工具完成该任务,因此我无法建议任何现成的工具。

好吧,我错过了你不想使用源代码控制系统的观点(这很奇怪,但你是老板:))在这种情况下只需用rsync替换签出,其他一切都保持相似。

答案 5 :(得分:0)

使用http://ccache.samba.org加速编译,只有少数文件在较大的项目中发生了变化,

当进行了大量更改时,请同时利用http://en.opensuse.org/Icecream进行共享分布式编译。

这应该可以显着加快编译 - 编辑 - 运行周期。

答案 6 :(得分:0)

由于您使用的是CI,我假设您已经正确设置了构建过程。我们正在做的是我们使用Windows框作为开发机器并且CI在Solaris上运行。这可以确保代码在多个平台上编译良好。代码是用Java编写的,我们不使用任何本机库,因此可以确保代码可以正常工作。 我们在工作中使用Bamboo - 它很棒但不是免费的:-)

对于我的私人项目,我一直在使用Continuum,但是Husdon看起来很整洁(我会试一试) - 谢谢Peter。

答案 7 :(得分:0)

一个选项是Cascade,它允许您在服务器上“检查”它们之前,而不是在提交之后,在所有平台上测试您的更改。

答案 8 :(得分:0)

一句话:Cruise(不是巡航控制)非常好。

您可以免费获得两个代理,每个平台可以获得一个代理。在mac和pc上安装需要花费几分钟的时间,而且我听到的内容在linux上也不算太差。