2013年5月11日土曜日

GitHubに置いたGAE/PythonアプリのテストをTravis CIで行う



幾つかあるCIサービスのうち、Travis CIを使ってみようと思い試してみた。

前提

  • 手元にGoogle App Engineを利用したPythonプロジェクトがあること
  • そのプロジェクトをGitHubのPublicプロジェクトとして管理していること
  • Pythonのunittestを行える環境がローカルに存在すること
  • Travis CIのアカウントを持っていること

GAE SDKを利用したスクリプトの作成

これをそのまま適当な名前でプロジェクト直下に保存すればよい。
ここではtest_gae.pyとする。

テストの作成

tests/を作成し、その直下に__init__.py(空でよい)とテストスクリプトを書く。次のものは、nameとownerプロパティを持つGroupモデルのテスト例。



テストの実行

python test_gae.py <Google App Engine SDKのパス> <テストディレクトリ>
(e.g. python test_gae.py /usr/local/google_appengine tests/)

実行結果

これでテストは通った。

CI対象プロジェクトの指定

ログイン → Accountsで表示されるプロジェクトから、
Travis CIの対象にするプロジェクトのスイッチをONにする。

CIプロジェクトの設定

Travis CI用設定ファイルの作成

Google App Engine SDKをダウンロードしてパスに通す荒業を実行する。
というわけで.travis.ymlを次のように書いてプロジェクト直下に保存する。


install → 必要なパッケージの指定(requirements.txt: pip freezeの内容)
before_script → Google App Engine SDKのダウンロードおよび展開
script → テストの実行

これで、次回以降のGitHubへのプッシュ時にTravis CIでscriptのテスト内容が実行される。

[追記]

travis-lintというgemが存在する。
gem installしてtravis-lintコマンドをプロジェクト直下で実行すると、
.travis.ymlが正しいか否かを確認できる。



0 件のコメント:

コメントを投稿