Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python代码库的连续集成系统_Python_Continuous Integration_Extreme Programming - Fatal编程技术网

Python代码库的连续集成系统

Python代码库的连续集成系统,python,continuous-integration,extreme-programming,Python,Continuous Integration,Extreme Programming,我开始用Python代码库做一个爱好项目,我想建立某种形式的持续集成(即每次签入时运行一组测试用例,并在测试失败时向负责人发送nag电子邮件)类似于CruiseControl或TeamCity 我意识到我可以在大多数VCSE中使用钩子来实现这一点,但这要求测试与版本控制服务器在同一台机器上运行,这并不像我希望的那样优雅。有人对一个小型的、用户友好的、开源的、适用于Python代码库的持续集成系统有什么建议吗?一种可能是Hudson。它是用Java编写的,但与Python项目有集成: 然而,我自

我开始用Python代码库做一个爱好项目,我想建立某种形式的持续集成(即每次签入时运行一组测试用例,并在测试失败时向负责人发送nag电子邮件)类似于CruiseControlTeamCity


我意识到我可以在大多数VCSE中使用钩子来实现这一点,但这要求测试与版本控制服务器在同一台机器上运行,这并不像我希望的那样优雅。有人对一个小型的、用户友好的、开源的、适用于Python代码库的持续集成系统有什么建议吗?

一种可能是Hudson。它是用Java编写的,但与Python项目有集成:

然而,我自己从来没有试过


更新,2011年9月:在商标纠纷之后,哈德逊被重命名为。)

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

第二步是Buildbot-Trac集成。您可以在上找到有关集成的更多信息。在我以前的工作中,我们编写并使用了他们提到的插件(tracbb)。 该插件所做的是重写所有Buildbot URL,以便您可以从Trac中使用Buildbot。()

Buildbot真正好的地方在于,配置是用Python编写的。您可以将自己的Python代码直接集成到配置中。编写自己的构建步骤来执行特定任务也非常容易

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


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

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

Buildbot的配置是纯Python的,一旦掌握了诀窍,就非常简单(查看epydoc生成的API文档以获取最新信息)。Buildbot使得定义非测试任务和分发测试人员变得更容易。然而,它实际上没有单独测试的概念,只有文本、HTML和摘要输出,因此如果您想要有多级可浏览的测试输出等等,您必须自己构建它,或者只使用Hudson

Hudson对从总体结果深入到测试套件和单个测试提供了极好的支持;它对于比较构建之间的测试输出也很有用,但是分布式(主/从)的东西相对来说更复杂,因为在从上也需要一个Java环境;此外,哈德逊对主服务器和从服务器之间脆弱的网络连接也不太宽容

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

以下是我们的例子:

我们使用的wich与trac集成。而且它是基于python的。

TeamCity有一些python

但TeamCity是:

  • 非开源
  • 它不小,但功能丰富
  • 对于中小型团队是免费的

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

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

  • Python不被支持作为第一类语言(在撰写本文时;但是您可以使用pip和apt get来安装Python依赖项;请参阅)

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


@Joe,很好的推荐@马特:如果你是一个python爱好者,不要让哈德逊是用Java编写的这一事实吓跑你。安装和运行非常简单。它与pylint和coverage.py集成。我在我的项目中运行它,我喜欢它。这比BuildBot简单多了。设置并运行Hudson只需一个命令。Java-Jar HudSun.WAR是我在这里看到的最棒的帖子:HdEdjava是用C++编写的编辑器,与java的编写相关。它只是一个写得非常好、易于设置、功能全面的CI工具。Python可以很好地集成,
nosetests——与xunit——具有覆盖范围
,pylint具有“违规”插件,而“Cobertura”用于coverage@dbr:不完全正确。语言的东西是写在往往影响软件的工作与最好的。。。特别是建立系统。两年前,当我研究Hudson时,它只希望单元测试输出为JUnit的XML格式;我的Python单元测试套件没有这样做。但是,如果我的项目是用Java编写的,它就会开箱即用。无论如何,从那时起,Hudson和Python工具的集成似乎已经取得了长足的进步,对此我表示感谢。是的,jenkins/Hudson很好,很容易设置。抱歉,我不坚持这一点:-)现在Travis CI完全支持Python: