我目前正在使用jenkins / hudson进行大型C ++项目的持续集成。我们为干线和每个分支都有单独的项目。此外,还有一些与Java代码相关的项目,但是这些项目的设置目前还很基本(不过我们稍后可能会做更多)。C ++项目执行以下操作:
- 使用是否重新配置,执行全新构建或使用全新签出的选项构建所有内容
- (可选)构建并运行所有测试
- (可选)使用Valgrind的memcheck运行所有测试
- 运行cppcheck
- 生成doxygen文档
- 发布报告:单元测试,valgrind,cppcheck,编译器警告,SLOC,打开的任务和代码覆盖率(使用gcov,gcovr和cobertura插件)
- 每晚或按需将代码部署到测试环境和软件包存储库
一切都可配置为自动构建,可选为按需构建。在下面,有一个bash脚本来控制其中的大部分内容,而这又取决于我们的构建系统,该构建系统使用automake和autoconf以及自定义bash脚本。
我们当时开始使用Hudson,因为那是Java伙计们正在使用的东西,而我们只想每晚进行构建。从那时起,我们增加了很多,并继续增加。从某些方面来说,哈德森很棒,但当然不是理想的。
我看过其他解决方案,唯一看起来可以替代的解决方案是buildbot。对于这种情况,buildbot会更好吗?因为我们已经在使用Hudson,所以投资值得吗?为什么?
编辑:有人问为什么我还没有发现哈德森/詹金斯是理想的。简短的答案是,一切都可以改善。我只是想知道Jenkins是否是针对我的用例的最佳最新解决方案,或者是否存在更好的东西(buildbot?),即使出现了新的需求,从长远来看,它也更容易维护。