Python的"好看"持续集成
这个问题有点自恋,但BuildBot的输出看起来实在不太好。
比如说,跟下面这些比起来:
..还有其他的,BuildBot看起来就显得有点过时了。
我现在在玩Hudson,但它非常偏向Java(不过通过这篇指南,我发现它比BuildBot更容易设置,并且提供了更多信息)。
简单来说:有没有针对Python的持续集成系统,能生成很多漂亮的图表之类的?
更新: 从那时起,Jenkins项目已经取代Hudson,成为这个软件包的社区版本。原来的作者也转到这个项目了。现在Jenkins已经成为Ubuntu/Debian、RedHat/Fedora/CentOS等系统的标准软件包。以下更新基本上还是正确的。用Jenkins来做这件事的起点是不同的。
更新: 在尝试了一些替代方案后,我觉得我还是会继续使用Hudson。Integrity很简单,但功能有限。我觉得Buildbot更适合有很多构建从机的情况,而不是像我之前那样在一台机器上运行所有东西。
为一个Python项目设置Hudson其实很简单:
- 从http://hudson-ci.org/下载Hudson
- 用
java -jar hudson.war
运行它 - 在默认地址
http://localhost:8080
打开网页界面 - 去管理Hudson,插件,点击“更新”或类似的选项
- 安装Git插件(我需要在Hudson的全局设置中设置
git
的路径) - 创建一个新项目,输入代码库、SCM轮询间隔等等
- 如果还没安装的话,通过
easy_install
安装nosetests
- 在构建步骤中,添加
nosetests --with-xunit --verbose
- 勾选“发布JUnit测试结果报告”,并将“测试报告XMLs”设置为
**/nosetests.xml
就这些了。你还可以设置邮件通知,插件也值得一看。我现在在Python项目中使用的一些插件包括:
- SLOCCount插件,用于统计代码行数(并生成图表!)- 你需要单独安装sloccount
- Violations,用于解析PyLint的输出(你可以设置警告阈值,绘制每次构建的违规数量图)
- Cobertura可以解析coverage.py的输出。Nosetest可以在运行测试时收集覆盖率,使用
nosetests --with-coverage
(这会将输出写入**/coverage.xml
)
14 个回答
我们在使用TeamCity作为我们的持续集成(CI)服务器时取得了很大的成功,同时使用nose作为我们的测试工具。TeamCity的nose测试插件可以让你看到测试通过和失败的数量,还能清晰地显示失败的测试(这些信息可以通过邮件发送)。你甚至可以在运行堆栈时查看测试失败的详细信息。
当然,它还支持在多台机器上运行,而且比buildbot更简单,设置和维护起来也更容易。
不知道这个是否有用:Bitten 是由编写 Trac 的团队制作的,并且与 Trac 集成在一起。Apache Gump 是 Apache 使用的持续集成工具,它是用 Python 写的。
你可以看看 Nose 和 Xunit 输出插件。它们可以帮助你运行单元测试和代码覆盖率检查,你只需要用这个命令:
nosetests --with-xunit --enable-cover
如果你打算使用 Jenkins,或者想用其他支持 JUnit 测试报告的持续集成服务器,这个功能会很有用。
同样,你也可以通过 Jenkins 的违规插件 来捕获 pylint 的输出。