【发布时间】:2011-08-04 22:23:25
【问题描述】:
我目前正在使用 jenkins/hudson 来持续集成一个主要是 C++ 的大型项目。我们为主干和每个分支都有单独的项目。此外,还有一些与 Java 代码相关的项目,但这些项目的设置现在相当基本(不过我们以后可能会做更多)。 C++ 项目执行以下操作:
- 构建所有内容,可选择重新配置、执行干净构建或使用全新结帐
- 可选择构建和运行所有测试
- 可选择使用 Valgrind 的 memcheck 运行所有测试
- 运行 cppcheck
- 生成 doxygen 文档
- 发布报告:单元测试、valgrind、cppcheck、编译器警告、SLOC、打开的任务和代码覆盖率(使用 gcov、gcovr 和 cobertura 插件)
- 每晚或按需将代码部署到测试环境和包存储库
一切都可配置为自动构建和可选的按需构建。在下面,有一个 bash 脚本可以控制其中的大部分内容,这进一步取决于我们的构建系统,它使用 automake 和 autoconf 以及自定义 bash 脚本。
我们(当时)开始使用 Hudson,因为 Java 开发人员正在使用它,而我们只是想要每晚构建。从那时起,我们添加了更多内容,并继续添加更多内容。在某些方面,Hudson 很棒,但肯定不理想。
我查看了其他解决方案,唯一看起来可以替代的解决方案是 buildbot。 buildbot 会更适合这种情况吗?既然我们已经在使用 Hudson,这项投资值得吗?为什么?
编辑:有人问我为什么没有发现 Hudson/Jenkins 是理想的。简短的回答是,一切都可以改进。我只是想知道 Jenkins 是否是我用例的最佳当前解决方案,或者是否有更好的东西(buildbot?)即使出现新的需求,从长远来看也更容易维护。
【问题讨论】:
-
我没有看过 Buildbot,但我们几乎可以完成您在 Hudson 上的多个 C++ 项目中提到的所有内容。您认为 Hudson/Jenkins 有哪些不理想的事情?
-
到目前为止,我们对 Jenkins/Hudson 非常满意。我们还没有真正遇到过任何我们认为它不足或缺乏的案例。
-
@SooWeiTan 很好,用户界面..
-
@Pithikos 自从我上次发表评论以来一直在使用 Jenkins。我开始同意了。当您开始安装插件时,情况会变得更糟。我们在 Jenkins 生态系统中根深蒂固,尽管切换系统将是一项巨大的努力。
-
投票结束过于广泛。更广泛的一个:stackoverflow.com/questions/25902/…
标签: c++ continuous-integration hudson jenkins buildbot