2008-08-02 12 views
48

私はPythonコードベースのホビープロジェクトで作業を開始しています。何らかの形で継続的な統合を設定したいと思います(チェックインするたびにバッテリーをテストケースで実行します)テストが失敗した場合に担当者に電子メールを送信する)、CruiseControlまたはTeamCityと同様です。Pythonコードベースの継続的インテグレーションシステム

私はほとんどのVCSesのフックでこれを行うことができたが、バージョン管理サーバと同じマシン上でテストを実行する必要があります。これは私が望むほど優雅ではありません。 Pythonコードベースに適した、小さな、ユーザーフレンドリーなオープンソースの継続的統合システムの提案はありますか?

答えて

25

我々は仕事でBuildbot - Tracを実行して、私のコードベースではないので、私はあまりそれを使用していませんリリースサイクルの一部。しかし、私たちはさまざまな環境(OSX/Linux/Win)でテストを実行し、電子メールを送信します。これはPythonで書かれています。

26

1つの可能性はハドソンである。これは、Javaで書かれていますが、統合は、Pythonのプロジェクトであります。

Hudson embraces Python

私はそれはしかし、自分自身を試したことがありません。

更新、2011年9月:商標紛争後ハドソンがJenkinsに名前が変更されました)

+3

(少なくとも公式バージョンを使用する場合)githubの上でホストされなければなりませんお勧めです。 @Mattあなたがパイソンの男なら、ハドソンがJavaで書かれているという事実をあなたに怖がらせないでください。設定と実行は簡単ではありません。これはpylintとcoverage.pyと統合されています。私はそれを私のプロジェクトで実行して、それを愛しています。 BuildBotの方が簡単です。それを設定してHudsonを実行するには、それは1つのコマンドです。ここでhudson.war -jar Javaは、私はそれを設定するための見た中で最高ポストである: http://www.rhonabwy.com/wp/2009/11/04/setting-up-a-python-ci -server-でハドソン/ハドソンは、Javaで書かれて –

+3

あなたはC++で書かれて使用するエディタのように関連しています!これは、セットアップが簡単で、一般的には完全に機能するCIツールです。完全に真ない:Pythonは、カバレッジ – dbr

+1

@dbrための "違反" のプラグイン、および "Coberturaの" とpylint、非常によく統合されたことが--with-coverage' --with-のxUnit 'nosetestsことができます。何かが書かれている言語は、しばしば最高の...システムを構築するソフトウェアに影響を与えます。 2年前にHudsonを見たとき、JUnitのXML形式でのみ単体テスト出力が必要でした。私のPythonユニットテストスイートはそれをしませんでした。しかし、私のプロジェクトがJavaであれば、それはそのままで済んでいたでしょう。いずれにしても、それ以来、HudsonとPythonのツールでは統合がずっと進んでいるように見えますが、私はそれに感謝しています。 –

17

第2に、Buildbot - Tracの統合です。統合の詳細についてはBuildbot websiteをご覧ください。私の以前の仕事では、言及したプラグイン(tracbb)を書いて使いました。 プラグインが行うことは、BuildbotのすべてのURLを書き換えて、Trac内からBuildbotを使用できるようにすることです。 (http://example.com/tracbb)。

Buildbotの本当に素晴らしい点は、設定がPythonで書かれていることです。独自のPythonコードを設定に直接統合することができます。特定のタスクを実行するための独自のBuildStepsの作成も非常に簡単です。

BuildStepsを使用してSVNからソースを取得し、依存関係を取得し、テスト結果をWebDAVなどに公開しました。

私はX10インターフェイスを作成しましたので、ビルド結果でシグナルを送信できました。ビルが失敗したとき、私たちは赤い溶岩ランプを入れました。ビルドが成功すると、緑色の溶岩ランプが点灯しました。良い時:-)

17

Jython開発用にBuildbotとHudsonの両方を使用します。どちらも便利ですが、強みと弱みがあります。

Buildbotの設定は純粋なPythonで、いったんハングすると非常に単純です(最新の情報についてはepydocで生成されたAPIドキュメントを見てください)。 Buildbotを使用すると、テスト以外のタスクを定義してテスターを配布しやすくなります。しかし、実際には個々のテスト、テキスト、HTML、およびサマリー出力の概念がないため、複数レベルのブラウズ可能なテスト出力などを望む場合は、自分でビルドするか、単にHudsonを使用する必要があります。

ハドソンは、全体的な結果からテストスイートおよび個々のテストに至るまでの掘り下げを非常にサポートしています。ビルド間のテスト出力を比較するのにも威力を発揮しますが、スレーブにもJava環境が必要なため分散型(マスター/スレーブ)のものは比較的複雑です。また、Hudsonはマスターとスレーブ間のフレークネットワークリンクの許容度が低いです。だから、

、両方のツールの利点を得るために、我々は、我々はBuildbotのとマルチプラットフォームの回帰を行い、共通テストの失敗をキャッチハドソンの単一のインスタンスを実行します。ここで

は、私たちのインスタンスです:

+0

'Jython Hudson'は動作しません – jfs

+0

残念ですが、私はそれを保守しません:-) –

7

私たちは、tracのと統合されBittenウィッヒを使用しています。それはPythonをベースにしています。

6

チームシティーは、いくつかのPython integrationを持っています。

しかし、チームシティーは、次のとおりです。

  • オープンソースではない
  • は小さくはないが、むしろ
  • 豊富に備えています小ミッドチームのために自由です。
5

小さなコードベースではTravis-CIと非常に良い経験があります。 主な利点は以下のとおりです。

  • セットアップは、あなたがあなた自身のインストールを行うか、単に自由にホストされたバージョン
  • GitHubのリポジトリのための半自動設定を使用することができます設定ファイル
  • の半分以下の画面で行われます
  • ウェブサイト上の不要のアカウント。 githubの

いくつかの制限を経由してログイン:

  • のPythonは執筆時のよう(ファーストクラス言語としてサポートされていません。しかし、あなたがピップを使用して、Pythonの依存関係をインストールするには、apt-getをすることができます。参照this tutorial

  • コード@Joe、G

+0

PythonはTravis CIで完全サポートされています:http://about.travis-ci.org/blog/announcing_python_and_perl_support_on_travis_ci/ –

関連する問題