Python コードベースの継続的統合システム
-
08-06-2019 - |
質問
私は趣味のプロジェクトに取り組み始めています パイソン コードベースを使用しており、何らかの形式の継続的インテグレーションをセットアップしたいと考えています(つまり、チェックインが行われるたびに一連のテストケースを実行し、テストが失敗した場合には責任者に小言メールを送信します)と同様です。 クルーズコントロール または チームシティ.
ほとんどの場合、フックを使用してこれを行うことができることに気づきました VCS, ただし、そのためにはテストをバージョン管理サーバーと同じマシン上で実行する必要があり、これは私が望むほどエレガントではありません。誰かが、 パイソン コードベース?
解決
私たちは走る ビルドボット - Trac 仕事で。私のコードベースはまだリリースサイクルに含まれていないため、あまり使用していません。ただし、さまざまな環境 (OSX/Linux/Win) でテストを実行し、電子メールを送信します。それは Python で書かれています。
他のヒント
可能性の一つはハドソンだ。これは Java で書かれていますが、Python プロジェクトとの統合があります。
ただし、私自身は試したことはありません。
(アップデート, 、9月2011年:商標権争いの後、ハドソンは次のように改名されました。 ジェンキンス.)
2 つ目は、Buildbot と Trac の統合です。統合の詳細については、 ビルドボット Web サイト. 。私の前職では、言及されているプラグイン (tracbb) を作成して使用していました。このプラグインが行うことは、Trac 内から Buildbot を使用できるように、すべての Buildbot URL を書き換えることです。(http://example.com/tracbb).
Buildbot の本当に優れた点は、構成が Python で記述されていることです。独自の Python コードを構成に直接統合できます。特定のタスクを実行するための独自の BuildStep を作成することも非常に簡単です。
BuildSteps を使用して、SVN からソースを取得し、依存関係を取得し、テスト結果を WebDAV に公開しました。
ビルド結果とともにシグナルを送信できるように、X10 インターフェイスを作成しました。ビルドが失敗したとき、赤い溶岩ランプを点灯しました。ビルドが成功すると、緑色の溶岩ランプが点灯しました。良い時間です:-)
Jython 開発には Buildbot と Hudson の両方を使用します。どちらも便利ですが、長所と短所が異なります。
Buildbot の構成は純粋な Python であり、コツを掴めば非常に簡単です (最新情報については、epydoc で生成された API ドキュメントを参照してください)。Buildbot を使用すると、テスト以外のタスクの定義とテスターの配布が簡単になります。ただし、実際には個々のテストの概念はなく、テキスト、HTML、概要の出力のみであるため、マルチレベルのブラウズ可能なテスト出力などが必要な場合は、自分でビルドするか、Hudson を使用する必要があります。
Hudson は、全体的な結果からテスト スイートや個々のテストにドリルダウンするための優れたサポートを備えています。また、ビルド間のテスト出力を比較するのにも最適ですが、スレーブにも Java 環境が必要なため、分散 (マスター/スレーブ) の処理は比較的複雑になります。また、ハドソンは、マスターとスレーブ間の不安定なネットワーク リンクに対してあまり寛容ではありません。
したがって、両方のツールの利点を活用するために、Hudson の単一インスタンスを実行して一般的なテストの失敗を捕捉し、次に Buildbot でマルチプラットフォーム回帰を実行します。
私たちの例は次のとおりです。
私たちが使用しているのは 噛まれた これはtracと統合されています。そしてそれはPythonベースです。
TeamCity には Python がいくつかあります 統合.
しかし、TeamCity は次のとおりです。
- オープンソースではない
- 小さいわけではなく、むしろ機能が豊富です
- 中小規模のチームは無料です。
私はとても良い経験をしています トラビス-CI より小さなコードベース向け。主な利点は次のとおりです。
- セットアップは構成ファイルの画面の半分未満で完了します
- 独自にインストールすることも、無料のホストされたバージョンを使用することもできます
- Github リポジトリの半自動セットアップ
- ウェブサイトにアカウントは必要ありません。github経由でログイン
いくつかの制限:
Python はファーストクラス言語としてサポートされていません (この記事の執筆時点では。ただし、pip と apt-get を使用して Python の依存関係をインストールできます。見る このチュートリアル)
コードは github でホストする必要があります (少なくとも公式バージョンを使用する場合)