假设您正在开发需要在多个主机(例如 Linux 和 Windows)上编译和运行的代码,鉴于以下情况,您将如何以最有效的方式执行此操作:
- 您可以完全访问要编译的每个主机的硬件(在我的情况下,一台 Linux 主机和一台站在我办公桌上的 Windows 主机)
- 在网络驱动器上构建太昂贵了
- 不需要提交到中央存储库——假设有一个 CI 引擎会在签入任何内容后立即尝试构建
“高效”意味着使编译-编辑-运行周期尽可能短和简单。
假设您正在开发需要在多个主机(例如 Linux 和 Windows)上编译和运行的代码,鉴于以下情况,您将如何以最有效的方式执行此操作:
“高效”意味着使编译-编辑-运行周期尽可能短和简单。
我能推荐的最好的东西是一个很棒的跨平台项目,叫做“BuildBot”。
每次您将新版本签入源代码控制系统时,BuildBot 都会自动在您支持的每个平台上进行构建。让它在 OSX、Linux (ubuntu)、Linux (debian)、Linux (Redhat)、Vista、Windows XP 等上构建,并在构建失败时发送电子邮件或您喜欢的任何内容。
作为构建过程的一部分,如果测试通过,您可以发布二进制文件。适用于“夜间”或“流血边缘”构建。
这里有一些网址:
我们发现Hudson是一个很棒的 CI 服务器,可以根据需要从源代码控制执行构建。由于它是用 Java 编写的,它可以在您选择的目标平台上运行,并且由于界面是基于 Web 的,您可以从任何地方控制它。有插件可以做大部分你想做的事情,最重要的是它是免费的!
选择一台机器作为您的开发箱。
将另一个设置为定期(每小时/每天/无论如何)从您的源代码管理自动更新。任何构建/测试失败都应该向您发送某种警告消息。(电子邮件,我,无论如何)。您的非开发框仍在本地构建,因为它有自己的树副本。
在进行真正的发布之前,您当然仍想进行人体测试。但这让生活在剩下的时间里保持清醒。
为此类任务构建简单的设置非常简单。
我会建议在 Windows 平台上使用Cygwin 。通过这种方式,您可以为 Linux 和 Windows 平台编写完全可移植的软件/脚本。您不清楚您在哪个项目阶段发布,但假设您只是开始我会建议使用make来构建您的软件。您可以使用 cron 来安排签出/构建周期的频率。如果构建日志损坏,您甚至可以发送包含构建日志的电子邮件。
有许多商业和开源的日常构建测试,你可以用谷歌搜索它,或者可能有人会在这里添加建议。
我们正在使用自制工具来完成这项任务,所以我不能建议任何现成的东西。
好的,我错过了你不想使用源代码控制系统的观点(这很奇怪,但你是老板 :))在这种情况下,只需用 rsync 替换签出,其他一切都保持相似。
使用http://ccache.samba.org来加快编译速度,因为在一个较大的项目中只有几个文件发生了变化,
当进行了较大的更改时,同时利用http://en.opensuse.org/Icecream进行共享分布式编译。
这可能会显着加快您的编译-编辑-运行周期。
由于您使用的是 CI,我假设您已经正确设置了构建过程。我们正在做的是我们将 windows 盒子用作开发机器,CI 在 Solaris 上运行。这确保了代码在多个平台上都能很好地编译。代码是 Java 的,我们不使用任何本地库,因此可以保证代码可以正常工作。我们在工作中使用 Bamboo - 它很棒但不是免费的:-)
对于我的私人项目,我一直在使用 Continuum,但 Husdon 看起来很整洁(我会试一试) - 谢谢 Peter。
一种选择是Cascade,它允许您通过在服务器上“检查点”它们来在提交之前而不是之后在所有平台上测试您的更改。
一句话:Cruise(不是Cruise Control)非常好。
您可以免费获得两个代理,每个平台一个代理。在 mac 和 pc 上设置实际上需要几分钟,据我所知,在 linux 上并不算太糟糕。