Python代码库的持续集成系统
我开始使用python代码库开展业余爱好项目,并希望设置某种forms的持续集成(例如,每次办理登机手续时都要运行一组testing用例,并在每次办理登机手续时发送唠叨的电子邮件给负责人testing失败)类似于CruiseControl或TeamCity。
我意识到我可以在大多数VCS中使用钩子来做到这一点,但是这要求testing在与版本控制服务器相同的机器上运行,这不像我想的那样优雅。 有没有人有任何build议,适合Python代码库的小型,用户友好的,开源的持续集成系统?
我们在工作中运行Buildbot – Trac ,因为我的代码库不是发布周期的一部分,所以我没有用太多。 但是,我们在不同的环境(OSX / Linux / Win)上运行testing,并发送电子邮件 – 它是用python编写的。
哈德森有一种可能性。 它是用Java编写的,但是它与Python项目是集成的:
哈德森拥抱Python
但是我从来没有尝试过。
( 更新 ,2011年9月:商标纠纷哈德森已更名为jenkins 。)
其次是Buildbot – Trac整合。 您可以在Buildbot网站上find更多关于集成的信息 。 在我以前的工作中,我们编写并使用了他们提到的插件(tracbb)。 插件做的是重写所有的Buildbot的URL,所以你可以在Trac中使用Buildbot。 ( http://example.com/tracbb )。
Buildbot的真正好处在于configuration是用Python编写的。 您可以将自己的Python代码直接集成到configuration中。 编写自己的BuildSteps来执行特定任务也很容易。
我们使用BuildSteps从SVN获取源代码,拉取依赖关系,将testing结果发布到WebDAV等等。
我写了一个X10接口,所以我们可以发送带有生成结果的信号。 当build设失败,我们打开一个红色的熔岩灯。 当build造成功,一个绿色的熔岩灯亮起。 美好时光 :-)
我们同时使用Buildbot和Hudson进行Jython开发。 两者都是有用的,但有不同的优点和缺点。
Buildbot的configuration是纯粹的Python,一旦你掌握了它,就很简单了(查看epydoc生成的API文档以获得最新的信息)。 Buildbot使定义非testing任务和分发testing人员变得更加容易。 但是,它确实没有单独的testing的概念,只是文本,HTML和汇总输出,所以如果你想有多级可浏览的testing输出等等,你必须自己构build它,或者只是使用Hudson。
哈德逊从整体结果进入testing套件和单独testing的支持非常好, 对于构build之间的testing输出进行比较也是很好的,但是分布式(主/从)的东西比较复杂,因为你也需要一个Java环境。 同样,哈德森也不太容忍主从机之间的片状networking连接。
因此,为了获得这两个工具的好处,我们运行一个Hudson实例,捕获常见的testing失败,然后使用Buildbot进行多平台回归。
以下是我们的实例:
- Jython Hudson
- Jython buildbot
我们正在使用与trac集成的Bitten 。 它是基于python的。
TeamCity有一些Python 集成 。
但TeamCity是:
- 不是开源的
- 不小,而是function丰富
- 对于中小型团队来说是免费的。
对于较小的代码库,我有很好的Travis-CI经验。 主要优点是:
- 安装程序在不到configuration文件的一半屏幕内完成
- 你可以做你自己的安装或者只是使用免费的托pipe版本
- Github仓库的半自动设置
- 网站上不需要帐户; 通过githublogin
一些限制:
-
Python不被支持作为第一类语言(到编写的时候;但是可以使用pip和apt-get来安装python依赖;请参阅本教程 )
-
代码必须在github上托pipe(至less在使用正式版时)