Python代码库的持续集成系统

时间:2008-08-02 18:43:55

标签: python continuous-integration extreme-programming

我开始处理一个带有 Python 代码库的业余爱好项目,我想建立某种形式的持续集成(即每次办理登机手续时运行一系列测试用例制作并在测试失败时向负责人发送唠叨电子邮件)类似于 CruiseControl TeamCity

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

7 个答案:

答案 0 :(得分:28)

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

  

Hudson embraces Python

然而,我自己从未尝试过。

更新,2011年9月:商标纠纷Hudson更名为Jenkins后。)

答案 1 :(得分:28)

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

答案 2 :(得分:19)

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

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

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

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

答案 3 :(得分:17)

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

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

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

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

以下是我们的实例:

答案 4 :(得分:7)

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

答案 5 :(得分:6)

TeamCity有一些Python integration

但TeamCity是:

  • not open-source
  • 不小,但功能丰富
  • 对于中小型球队是免费的。

答案 6 :(得分:5)

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

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

一些限制:

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

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