持续集成:非托管 C++ 在 Visual Studio 2008 上
我花了 4 年时间为一家商业公司使用 Visual Studio 2008 开发 C++; 现在是我升级我的开发流程的时候了。
问题是:我没有一键构建自动化。 我也没有一个 CI 服务器,它可以在提交发生时自动构建,并且无论构建是否损坏都会通过电子邮件通知我。 更糟糕的是我们甚至没有一个单元测试!
有人可以指出我如何开始吗?
我看过很多很多工具,我想我可能会选择:
Visual Build(用于构建自动化)(注意:我也考虑过 Final Builder)
Cruise(针对 CI 服务器)
我现在也刚刚开始练习 TDD...所以我也想自动化我的单元测试。 我选择 Google Test/Mock 是因为他们有大量的文档。 (Google 品牌不会出错吧?=p)
价格不是问题,我想要最好、最容易上手的。
使用真正的 CI/自动化工具进行非托管 MSVC++ 的人们能否告诉我他们的工具以及如何开始?
我们的源代码控制是 Subversion。
最后一点:我还在考虑将项目管理/跟踪工具集成到 VSTD 中......并考虑使用 OnTime。 VSTS 成本太高。 我尝试过FogBugz,但我认为它太简单了。 还有其他人吗?
I've spent 4 years developing C++ using Visual Studio 2008 for a commercial company; it's now time for me to upgrade my development process.
Here's the problem: I dont have a 1 button build automation. I also dont have a CI server that automatically builds when a commit happens, and emails me whether a build is broken or not. Worse we dont even have a single unit test!!
Can someone please point to me how I can get started?
I have looked at many many tools and I think I might go with:
Visual Build (for build automation) (Note: I also considered Final Builder)
Cruise (for CI server)
I also now am just starting to practice TDD...so I will want to automate my unit tests as well. I chose Google Test/Mock for their extensive documentation. (Cant go wrong with Google brand can I? =p)
Price is not the issue, I want what's best and easiest to get started.
Can people that use real CI/automation tool for unmanaged MSVC++ tell me their tools and how I can go about starting?
Our source control is Subversion.
Last point: I'm also considering project management/tracking tool that integrates right into VSTD ..and thinking about using OnTime. VSTS costs too much. I tried FogBugz, but I think it's too simple. Any others?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
我会花一些时间认真考虑 TeamCity。 我们使用 CruiseControl.NET 一段时间,而 TeamCity 彻底摧毁了它。 另外,它还具有 Boost 和 CppUnit 的内置插件,因此您的单元测试将是免费的。
最重要的是,该工具对于 << 是免费的。 20 个用户并为您提供三个构建代理。
我刚刚在工作中实现了我们的 C++ 产品,它相当简单。 我们使用 msbuild 完成此操作,并且基本上使用 msbuild 任务来编译解决方案。 其他目标可用于复制文件、运行单元测试等。
I would take some time to seriously consider TeamCity. We used CruiseControl.NET for a while and TeamCity completely demolishes it. Plus it has built-in plugins for Boost and CppUnit, so your unit testing will come for free.
Best of all, the tool is free for < 20 users and gives you three build agents.
I just finished implementing our C++ product at work and it was fairly simple. We did it with msbuild and basically use the msbuild task to compile the solution. Other targets can be used to copy files, run unit tests, etc.
上次我处理一个非托管的 MSVC++ 项目(我可能会补充一下,该项目的大小适中),我们使用 FinalBuilder 来进行自动构建和构建。 版本控制(甚至还执行 PCLint 和其他分析工具)。
话虽如此,如果您愿意投入时间,MSBuild(或者可能是 nAnt?)可以满足您所需的一切 - 即使对于非托管解决方案也是如此。
这给我们带来了权衡:Visual Build Pro 和 Final Builder 等工具可以让您快速启动并运行。 如果您想要提供更大范围定制的东西,您可能会花费相当多的时间来学习和理解它 - 即 MSBuild、CIFactory、nAnt 等都不是小菜一碟。
那么,如果价格不是问题,那么时间是问题吗? 如果时间很宝贵,我会研究 GUI 驱动的工具,它们会带你快速到达你想去的地方。 如果您知道需要扩展简单的一键构建+单元测试+部署场景(这种情况经常发生!),那么决定是否可以将时间投入到更复杂的工具(例如 MSBuild)上?
The last time I worked on an unmanaged MSVC++ project (which was moderately sized I might add), we used FinalBuilder to do the automated build & versioning (and even executing PCLint and other profiling tools as well).
Having said that, if you're willing to invest the time, MSBuild (or nAnt perhaps?) can do everything you need - even for unmanaged solutions.
Which brings us to the trade-off: Tools like Visual Build Pro and Final Builder get you up and running quickly. If you want something which offers a greater range of customization, you'll probably be spending a decent amount of time learning and understanding it - i.e. MSBuild, CIFactory, nAnt etc are no cake walk.
So if price isn't an issue - is time an issue? If time is at a premium, I'd investigate the GUI driven tools, they'll get you to where you want to go quickly. If you know you're going to need to extend on the simple one button build + unit tests + deploy scenario (which happens a lot!) then decide if you can invest the time into the more complex tools like MSBuild?
我们使用 Boost.Build、NAnt, CPPUnit 和 Cruise Control.NET 或 Hudson(我们已将它们用于各种项目,但开始更喜欢 Hudson)。
尽管我们正在考虑替换 CPPUnit,但它们都是很好的工具 - 从我所见,Google 单元测试系统非常好。
如果您只想在 Windows 上运行,您可以丢失 Boost.Build,而只需从 NAnt 调用 Visual Studio。
至于问题跟踪/项目管理,经过长时间的调查,我们选择了Vision Project。 它还不为人所知,但我们发现它非常适合我们的环境。 Fogbugz 很棒,界面漂亮、清晰,但我们得出的结论是你也这样做了; 对于我们的需求来说太简单了。
尽管 .NET 世界被这些类型的工具宠坏了,但为 C++ 设置持续集成仍然非常容易! 如果没有安装这些系统,我不会考虑开始一个不平凡的项目。
We use a combination of Boost.Build, NAnt, CPPUnit and either Cruise Control.NET or Hudson (we've used them both for various projects but are starting to prefer Hudson).
They are all good tools though we're considering replacing CPPUnit - the Google unit test system is pretty good from what I've seen.
If you're happy running on just Windows you can lose Boost.Build and just call out to Visual Studio from NAnt.
As for issue tracking/project management we settled on Vision Project after a long investigation. It's not well known (yet) but we've found it a very good fit in our environment. Fogbugz is great, a nice, clear interface but we came to the conclusion you did too; way too simple for our needs.
Although the .NET world is spoilt for these kinds of tools Continuous Integration is still pretty easy to set up for C++! I wouldn't think of starting a non-trivial project without putting these systems in place.
我们使用 subversion + Cruisecontrol + wix 来完成 CI 自动化构建并输出一键安装程序。 这个组合对我们来说非常有效。 我们已经为 svn 用户组和权限管理创建了自己的站点,并将抄送 Web 界面添加到其中。 我们有一个 SQL Server 存储从 svn 和 cc 收集的所有统计信息,并将它们用于我们网站上提供的自定义报告。 我们希望添加其他工具来检查存储在 svn 中的代码的各种属性。 这个组合对我们来说非常有效。
we use subversion + cruisecontrol + wix to accomplich CI automated builds outputting one-click installers. this combo has worked very well for us. we've created out own site for admin of svn user groups and permissioning and added the web interface to cc to it. we have a sql server storing all the collected stats from svn and cc and use them for custom reports available on our site. we are looking to add other tools to the mix for checking various attributes of the code stored in svn. this combo has worked very well for us.
在我的公司,我们使用 CruiseControl (http://cruisecontrol.sourceforge.net/)。 Java 版本,而不是 .NET,用于在 Windows 和 OS X 上构建我们的 wxWidgets 应用程序。到目前为止,我们工作得很好。
At my company we use CruiseControl (http://cruisecontrol.sourceforge.net/). The Java version, not .NET, to build our wxWidgets application on Windows and OS X. Working great for us so far.