継続的インテグレーション

どうして?

Kent Beckと一緒に 継続的インテグレーション (短略: CI)」を初めて書いたMartin Fowlerは、CIについて次のように説明しています。

継続的インテグレーションとは、チームのメンバーが頻繁に作業を統合するソフトウェア開発のことで、通常は1日に少なくとも1人は統合し、1日に複数のインテグレーションにつながります。 各インテグレーションは、自動化ビルド(テストを含む)によって検証され、統合エラーを可能な限り迅速に検出します。 多くのチームでは、このアプローチにより統合の問題が大幅に軽減され、チームが一貫性のあるソフトウェアをより迅速に開発できるようになりました。

Jenkins

Jenkins CI は、拡張可能な継続的インテグレーションエンジンです。 これを使います。

Buildbot

Buildbot はコードの変更を検証するためのコンパイル/テストサイクルを自動化するPythonシステムです。

Tox

tox は、コンソールやCIサーバからPythonソフトウェアをパッケージ化、テスト、デプロイするオートメーションツールです。これは、以下の機能を提供する汎用の仮想管理およびテストコマンドラインツールです。

  • 異なるPythonのバージョンとインタプリタでパッケージが正しくインストールされていることを確認する
  • 各環境でのテストの実行、テストツールの選択
  • 継続的インテグレーションサーバーのフロントエンドとして機能し、定型文を削減し、CIおよびシェルベースのテストをマージします。

Travis-CI

Travis-CI はオープンソースプロジェクトのテストを無料でビルドする分散型CIサーバです。 Pythonテストを実行する複数のワーカーを提供し、GitHubとシームレスに統合します。 この特定のチェンジセットがビルドを破るかどうかは、Pull Requestにコメントすることさえできます。 したがって、GitHubでコードをホストしている場合、travis-ciは継続的インテグレーションを使い始めることができます。

開始するには、この例のコンテンツで、 .travis.yml ファイルをリポジトリに追加してください:

language: python
python:
  - "2.6"
  - "2.7"
  - "3.2"
  - "3.3"
# command to install dependencies
script: python tests/test_all_of_the_units.py
branches:
  only:
    - master

これにより、指定されたスクリプトを実行することによってリストされたすべてのPythonバージョンでプロジェクトがテストされ、マスターブランチのみがビルドされます。 通知や前後の手順など、さらに多くのオプションを有効にすることができます。 travis-ci docs はこれらすべてのオプションを説明しており、非常に徹底的です。

プロジェクトのテストを有効にするには、 travis-ci site に行き、あなたのGitHubアカウントでログインしてください。次に、あなたのプロファイル設定でプロジェクトをアクティブにし、あなたが移動する準備が整いました。 これから、あなたのプロジェクトのテストはすべてのGitHubへのプッシュで実行されます。