用于C ++持续集成的buildbot vs hudson / jenkins
我目前正在使用jenkins / hudson进行持续集成,主要是C ++项目。 我们为主干和每个分支分别开发项目。 此外,还有一些与Java代码相关的项目,但现在对于这些项目的设置相当基本(尽管我们可能会做更多的事情)。 C ++项目执行以下操作:
一切都可以配置为自动构建和可选的按需构建。 在下面,有一个bash脚本来控制这个,这更多的取决于我们的构建系统,它使用automake和autoconf以及自定义的bash脚本。
我们开始使用Hudson(当时),因为这是Java人使用的,我们只是想每晚构建。 从那以后,我们增加了更多,并继续增加更多。 在某些方面哈德森是伟大的,但肯定不是理想的。
我看过其他的解决方案,唯一看起来可以替代的解决方案是buildbot。 这种情况会更好吗? 自从我们已经使用Hudson以来,投资是否值得? 为什么?
编辑 :有人问我为什么没有找到哈德森/詹金斯是理想的。 简而言之,一切都可以改善。 我只是想知道,如果詹金斯是我用例的最佳解决方案,或者是否有更好的东西(buildbot?),那么即使出现新的需求,从长远来看也会更容易维护。
两者都是开源项目,但您不需要更改buildbot代码以“扩展”它,实际上很容易将自己的软件包导入到其配置中,在该配置中可以使用自己的添加对大多数功能进行子分类。 例如:您自己的编译或测试代码,一些输出/错误的解析以及后续步骤的错误,您自己格式化的警报电子邮件等等,这里有很多可能性。
一般来说,我会说buildbot是最“通用”的自动构建工具。 然而Jenkins可能与运行测试最为相关,特别是以很好的方式解析和呈现结果(结果,细节,图表......一些点击消失),这些buildbot不会“开箱即用”。 我实际上正在考虑使用两个有更性感的测试结果页面。:-)
另外,作为一个经验法则,创建一个新工具的配置应该不难:如果指定做什么(配置,构建,测试)太难以从一个工具切换到另一个工具,则它是(坏)符号没有足够的配置脚本移动到源。 Buildbot(或Jenkins)只应该调用简单的命令。 如果运行测试很简单,那么开发人员也会这样做,这会提高成功率,而如果只有持续集成系统运行测试,那么您将在运行之后运行它来修复新的代码故障,并且会丢失它的非回归值,只是我的0.02€:-)
希望它会有所帮助。
除了Jenkins / Hudson / BuildBot之外,还有很多其他的解决方案:
关于你在做什么的细节并不重要,事实上,只要你正在做的代理(aka节点)支持这些任务。
CI服务器的美妙之处在于当构建更改为触发新构建(和测试),发布构件以及发布测试结果时注意到这一点。
当您比较我们提到的CI工具时,请考虑诸如界面的可用性,分支的容易程度(以及它可能提供的自动合并功能),通知(如XMPP / jabber)或信息散热器(如挂钩启动显示器以始终显示状态)。 产品支持是另一个需要考虑的事情 - 詹金斯的支持只有在您有问题时谁回答社区问题。
我个人最喜欢的是Bamboo,但它收取了许可费。
'结果整合'也在jenkins / hudson中,您可以相对容易地捕获构建产品,而无需'将其复制到其他地方'。
对于我们的实例,覆盖率报告和单元测试指标以及Java代码的javadoc全部集成在一起。 对于我们的C ++代码,插件有点缺乏,但您仍然可以获得大部分插件。
我们在0.7之前运行buildbot,现在运行了0.8,并且现在只能看到切换的真正原因,因为buildbot 0.8在很长一段时间内忘记了Windows从站,并且支持很差。
链接地址: http://www.djcxy.com/p/50759.html上一篇: buildbot vs hudson/jenkins for C++ continuous integration