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