python - style - 莫煩matplotlib




Python代碼庫的持續集成系統 (5)

我們在工作中運行Buildbot - Trac ,因為我的代碼庫不是發布週期的一部分,所以我沒有用太多。 但是,我們在不同的環境(OSX / Linux / Win)上運行測試,並發送電子郵件 - 它是用python編寫的。

我開始使用python代碼庫開展業餘愛好項目,並希望設置某種形式的持續集成(例如,每次進行登記時運行一組測試用例,並在每次進行簽入時發送嘮叨的電子郵件給負責人測試失敗)類似於CruiseControl或TeamCity。

我意識到我可以在大多數VCS中使用鉤子來做到這一點,但是這要求測試在與版本控制服務器相同的機器上運行,這不像我想的那樣優雅。 有沒有人有任何建議,適合Python代碼庫的小型,用戶友好的,開源的持續集成系統?


其次是Buildbot - Trac整合。 您可以在Buildbot網站上找到更多關於集成的信息 。 在我以前的工作中,我們編寫並使用了他們提到的插件(tracbb)。 插件做的是重寫所有的Buildbot的URL,所以你可以在Trac中使用B​​uildbot。 ( http://example.com/tracbb )。

關於Buildbot的真正好處是配置是用Python編寫的。 您可以將自己的Python代碼直接集成到配置中。 編寫自己的BuildSteps來執行特定任務也很容易。

我們使用BuildSteps從SVN獲取源代碼,提取依賴關係,將測試結果發佈到WebDAV等等。

我寫了一個X10接口,所以我們可以發送帶有生成結果的信號。 當建設失敗,我們打開一個紅色的熔岩燈。 當建造成功,一個綠色的熔岩燈亮起。 美好時光 :-)


TeamCity有一些Python 集成

但TeamCity是:

  • 不是開源的
  • 不小,而是功能豐富
  • 對於中小型團隊來說是免費的。

我們同時使用Buildbot和Hudson進行Jython開發。 兩者都是有用的,但有不同的優點和缺點。

Buildbot的配置是純粹的Python,一旦你掌握了它,就很簡單了(查看epydoc生成的API文檔以獲得最新的信息)。 Buildbot使定義非測試任務和分發測試人員變得更加容易。 但是,它確實沒有單獨的測試的概念,只是文本,HTML和匯總輸出,所以如果你想有多級可瀏覽的測試輸出等等,你必須自己構建它,或者只是使用Hudson。

哈德遜從整體結果進入測試套件和單獨測試的支持非常好, 對於構建之間的測試輸出進行比較也是很好的,但是分佈式(主/從)的東西比較複雜,因為你也需要一個Java環境。 同樣,哈德森也不太容忍主從機之間的片狀網絡連接。

因此,為了獲得這兩個工具的好處,我們運行一個Hudson實例,捕獲常見的測試失敗,然後使用Buildbot進行多平台回歸。

以下是我們的實例:


哈德森有一種可能性。 它是用Java編寫的,但是它與Python項目是集成的:

哈德森擁抱Python

但是我從來沒有嘗試過。

更新 ,2011年9月:商標糾紛哈德森已更名為詹金斯 。)





extreme-programming