Python代码库的持续集成系统

Matt 54 python continuous-integration extreme-programming

我开始研究一个带有Python代码库的业余爱好项目,我想设置某种形式的持续集成(即每次签入时运行一组测试用例并向负责人发送唠叨的电子邮件与测试失败的人类似于CruiseControlTeamCity.

我意识到我可以在大多数VCS中使用钩子来做到这一点,但这要求测试在与版本控制服务器相同的机器上运行,这不像我想的那样优雅.有没有人对适合Python代码库的小型,用户友好的开源持续集成系统有任何建议?

Joe Shaw.. 29

一种可能性是哈德森.它是用Java编写的,但它与Python项目集成:

Hudson拥抱Python

但是,我自己从未尝试过.

(更新,2011年9月:在商标纠纷之后,Hudson已更名为Jenkins.)

  • @Joe,好推荐.@Matt如果你是一个蟒蛇家伙,不要让Hudson用Java编写的事实吓跑你.设置和运行都很简单.它与pylint和coverage.py集成.我让它在我的项目上运行并且喜欢它.它比BuildBot简单得多.要设置并运行Hudson,这是一个命令.java -jar hudson.war这是我见过的最好的帖子:http://www.rhonabwy.com/wp/2009/11/04/setting-up-a-python-ci-server-与哈德森/ (3认同)
  • 使用Java编写的Hudson与您使用C++编写的编辑器一样重要!它只是一个写得很好,易于设置且通常功能齐全的CI工具.Python可以很好地集成,`nosetests --with-xunit --with-coverage`,带有"Violations"插件的pylint和用于覆盖的"Cobertura" (3认同)

nlucaroni.. 29

我们在运行Buildbot - Trac.我没有太多使用它,因为我的代码库还不是发布周期的一部分.但我们在不同的环境(OSX/Linux/Win)上运行测试并发送电子邮件 - 它是用Python编写的.


Daan.. 19

第二个Buildbot - Trac集成.您可以在Buildbot网站上找到有关集成的更多信息.在我以前的工作中,我们编写并使用了他们提到的插件(tracbb).该插件所做的是重写所有Buildbot网址,以便您可以在Trac中使用B​​uildbot.(http://example.com/tracbb).

关于Buildbot的好处是配置是用Python编写的.您可以将自己的Python代码直接集成到配置中.编写自己的BuildSteps来执行特定任务也非常容易.

我们使用BuildSteps从SVN获取源,提取依赖关系,将测试结果发布到WebDAV等.

我写了一个X10接口,所以我们可以发送带有构建结果的信号.当构建失败时,我们打开了一个红色的熔岩灯.当构建成功时,绿色熔岩灯打开.美好时光 :-)


Nicholas Ril.. 17

我们使用Buildbot和Hudson进行Jython开发.两者都很有用,但有不同的优点和缺点.

Buildbot的配置是纯Python,一旦掌握了它就很简单(查看epydoc生成的API文档以获取最新信息).Buildbot可以更轻松地定义非测试任务并分发测试人员.但是,它实际上没有单独测试的概念,只有文本,HTML和摘要输出,所以如果你想要多级可浏览测试输出等等,你必须自己构建它,或者只使用Hudson.

Hudson非常支持从总体结果深入到测试套件和单个测试中; 它也非常适合比较构建之间的测试输出,但分布式(主/从)的东西比较复杂,因为你也需要奴隶上的Java环境; 此外,哈德森对主人和奴隶之间的片状网络链接的容忍度较低.

因此,为了获得这两种工具的好处,我们运行一个Hudson实例,它捕获常见的测试失败,然后我们使用Buildbot进行多平台回归.

这是我们的实例:


Pierre-Jean .. 7

我们正在使用Bitten与trac集成.它是基于python的.


用户甲.. 6

TeamCity有一些Python 集成.

但TeamCity是:

  • 不是开源的
  • 不小,但功能丰富
  • 对于中小型球队来说是免费的.


Bernhard Kau.. 5

对于较小的代码库,我对Travis-CI有很好的经验.主要优点是:

  • 设置在不到半个配置文件的屏幕中完成
  • 您可以自己安装或只使用免费的托管版本
  • github存储库的半自动设置
  • 网站上不需要帐户; 通过github登录

一些限制:

  • Python不支持作为第一类语言(截至编写时;但您可以使用pip和apt-get来安装python依赖项;请参阅本教程)

  • 代码必须托管在github上(至少在使用官方版本时)