2008-09-18 53 views
1

假设你正在开发一个需要编译和多个主机(比如Linux和Windows)上运行的代码,你将如何去这样做,以最有效的方式考虑到:编译多个主机上

  • 您可以完全访问硬件,你的编译(在我的情况下,Linux主机和Windows主机站在我的办公桌)
  • 大厦在网络驱动器的每个主机太贵
  • 没有提交到中央存储库应该是必需的 - 假设有一个CI引擎在尝试在

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

回答

1

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

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

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

它看起来像脉搏也有same feature,但我没有第一手的经验。

0

选择一台机器作为您的开发箱。

设置另一个定期自动更新源代码管理(每小时/每天/任何)。任何构建/测试失败都会向您发送某种警告消息。 (电子邮件,即时通讯,等等)。由于它有自己的树副本,因此您的非开发框仍在本地构建。

在做真正的发布之前,你仍然想要做人体测试。但是这会让剩下的时间保持健康。

1

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

0

构建这种任务的简单设置非常简单。
我会建议Cygwin在Windows平台上使用。这样你就可以为Linux和Windows平台编写完全可移植的软件/脚本。你不清楚你在哪个项目阶段发布了你的项目,但假设你只是开始,我会建议使用make来构建你的软件。您可以使用cron为您的结账/建立圈安排频率。如果破坏,您甚至可以发送带有生成日志的电子邮件。
有一些准备每日构建测试商业和开源你可以谷歌它或可能有人会在这里添加建议。
我们正在使用家庭成长的工具来完成这项任务,所以我不能建议任何准备好的东西。

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

3

我可以推荐的最好的东西是一个叫做'BuildBot'的超棒的跨平台项目。

每次您在源控制系统中检查新版本时,BuildBot都会自动导致在您支持的每个平台上发生构建。它建立在OSX,Linux(Ubuntu),Linux(Debian),Linux(Redhat),Vista,Windows XP等上,并且在构建失败时发送电子邮件或任何你喜欢的东西。

作为构建过程的一部分,如果测试通过,您可以发布二进制文件。对于'每晚'或'出血端'构建有用。

这里的一些网址:

+0

但是其中一个要求是不需要提交,即我希望能够直接从单个源代码树构建。我们使用Hudson来构建Windows和Linux,所以我想在没有提交的情况下发现任何问题。 – JesperE 2008-09-18 07:45:42

0

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

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

+0

您可以在基于Java的应用程序中实现大量的错误,这些错误只会在单个平台上失败。我们的测试失败只发生在Linux上,甚至在OSX上传递。我认为最好的做法是测试你打算发货的所有东西。 – Trejkaz 2015-08-11 00:30:47

0

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

0

一个字:Cruise(不克鲁斯控制)是非常好的。

您可以免费获得两个代理商,并且每个平台可以获得一个代理商。它需要几分钟时间才能在Mac和PC上设置,而且从我听到的内容来看,在Linux上并不算太坏。