5

我想为在 Visual Studio 2005 中开发的非托管 C++ 代码设置构建服务器。构建服务器应该能够执行以下操作:

  • 监控 Subversion 存储库的代码更改并安排构建
  • 从 Subversion 签出代码并运行单元测试
  • 提供有关构建成功和先前构建更改的某种报告

我最初一直在考虑将 CruiseControl 与 Ant 一起使用。有更好的解决方案吗?也许 CruiseControl.Net 和 NAnt?

4

8 回答 8

2

NAnt 需要做很多工作才能有效地构建 C++。它确实是一个彻头彻尾的 .NET 构建系统。我们正在为四个 C++ 平台和一组 .NET 工具构建我们的标题,并且需要一段时间才能使 NAnt 满足我们的需求。例如,NAnt 的 C++ 依赖分析非常糟糕,以至于我们不得不自己编写。它有很多性能问题,我们不得不去解决它来解决。

所以不要双脚跳进去。做一些初步测试,以确保它真的可以做你想做的事,并了解你需要为 C++ 修改多少。

此外,我们还将 CruiseControl.NET 用于我们已内置到驱动我们正在开发的游戏的工具之一中的一些 NUnit 东西。对此非常满意,设置起来非常容易。在这里竖起大拇指。

在之前的演出中,我在您描述的确切场景中使用了 Final Builder - 在构建服务器上。本地构建是使用 Visual Studio 完成的。这是一个非常棒的产品,如果你有一点钱可以花,我会认真考虑。我们从中得到了很好的结果。

在我现在的公司,我们选择了 NAnt,因为我们不想为团队中的每个工程师都购买 FB。我们也不喜欢 FB 是封闭源代码的。所以我们是 100% Nant 并且喜欢它。只是花了一些时间来塑造它!

于 2008-11-17T20:27:48.003 回答
2

由于没有人提到,Jenkins 是一个很好的 CI,并且变得越来越普遍(免费也没有什么坏处):

http://jenkins-ci.org/

易于安装、使用和监控,并与很多东西(SVN、GIT 等)很好地集成。也非常可定制。需要 5 分钟才能启动并运行。

于 2012-11-28T21:13:39.413 回答
0

我刚刚开始使用 Visual Build Professional,印象非常深刻,您可以从这里下载功能齐全的 30 天试用版:

http://www.kinook.com/VBP/

SVN 也完全支持。

于 2008-11-17T20:12:08.690 回答
0

我们使用 FinalBuilder 构建我们的 Visual Studio 2005 项目,包括使用 InstallShield 打包最终的 exe 和 dll 并将它们放在共享服务器上。

我们还远程登录(从 FinalBuilder)到许多其他平台(Unix/Linux/OpenVMS),并通过在那里运行 makefile 来启动远程构建。

我们不使用连续构建,但有一个 FinalBuilder Server 可以处理这个问题,并免费提供 FinalBuilder Professional 许可证。

我们对 FinalBuilder 非常满意,它很容易上手,而且功能强大,可以解决大多数问题。

于 2008-11-17T20:24:21.567 回答
0

我们使用 CruiseControl.Net 和 NAnt(和 Subversion),我们对结果很满意。

于 2008-11-17T20:33:09.460 回答
0

除了 Ant CruiseControl 还支持NAntExec

但如果你真的想走前卫,你可以考虑Rake(关于:Rake.Net 上的 Rake 入门)。

于 2008-11-17T20:46:24.893 回答
0

Visual Studio 2005 项目完全可以从命令行运行!做就是了

devenv.com whatever.sln /build 'Release|Win32' /project whatever

(替换whatever为您的项目名称以及Release|Win32您需要的配置和平台)。这可以由 CruiseControl 或 Jenkins 或其他任何东西轻松运行。

于 2012-03-28T14:43:43.283 回答
0

在 Visual Studio 2010 中,微软最终将 Visual C++ 项目文件 (.vcproj) 的格式升级为基于 XML 的 NAnt 克隆格式 MSBuild,现在命名为 .vcxproj。这意味着 C++ 项目将使用该任务轻松编译。

如果您可以预见您只会拥有一个小团队和有限数量的构建,我会推荐使用 NAnt 的 TeamCity (http://www.jetbrains.com/teamcity/)。TeamCity 是一个基于 Java 的 CI 服务器(更容易在 Linux 构建服务器上部署),它支持单独的构建代理(因此您可以拥有多个 Windows 虚拟机或运行构建的专用机器)。

TeamCity 对基于 MSBuild、NAnt 和 Ant 的构建的支持非常出色,它有一个非常好的基于 AJAX 的 GUI,使用起来很有趣,并且允许您从浏览器设置和配置项目。但是,如果您越过免费版的 20 个项目门槛,它就会变得不合理地昂贵。

我可以推荐的另一个选项是 Jenkins 与 NAnt、Ant、MSBuild 或 Jenkins 可以支持的其他许多构建系统之一。Jenkins 是开源的,将处理无限的项目,例如 TeamCity,它可以在服务器上运行,同时将构建发送到单独的构建代理,并且它具有许多 C++ 工具的插件(想想静态分析、单元测试和打包)。

Jenkins 的 Web 界面不像 TeamCity 那样方便和美观,但它被广泛使用并且几乎所有东西都有插件。

于 2012-05-25T11:09:00.493 回答