Travis CIを使ったDjangoプロジェクトの継続的インテグレーション

はじめに

以前,Djangoのテスト(ユニットテスト)の書き方について勉強したことがありました.

Djangoのテストの書き方について勉強したのでまとめる - Programming Log

今回は↑の記事でも作成したDjangoプロジェクトに,Travis CIの設定を追加しました. Jenkins使おうかと思っていたのですが,Travis CIの方が手軽そうだったのでこちらにしました. ソースコードGithubで公開しています.

Travis CIについて

Travis CIは言語の各バージョンを同時ビルドでき,利用者が多くドキュメントも豊富らしいです. もちろんDjangoのTutorialもありました. これを参考にすすめてみます.

Travis CI: Building a Python Project

アカウントの作成

travis ciのトップページからGithubでサインアップできました. するとGithubのパブリックなリポジトリの一覧が現れるので, 対象のリポジトリのスイッチをonに変えます. これで準備OK

.travis.yml

Travis CIではyamlで設定ファイルを記述します.

language: python
python:
  - "3.2"
  - "3.3"
  - "3.4"
env:
  - SECRET_KEY=secretkey
install:
  - pip install -r requirements.txt
script:
  - python manage.py migrate
  - python manage.py test

languageで言語,pythonでバージョン,envで環境変数等を設定できます. またscriptに記述したものが実際に実行されます.

設定はこれだけで良いみたいです.手軽だ githubにpushすると結果がメールで届きます.

またpull requestが来た場合にも自動でテストを実行して結果を通知してくれます.

バッジを貼る

↑の記事を参考にバッジを貼ってみます.README.mdに↓の行を追加しました.

[![Build Status](https://travis-ci.org/c-bata/TDD-with-Django.svg)](https://travis-ci.org/c-bata/TDD-with-Django)

f:id:nwpct1:20150208185501p:plain

テストがちゃんと通ってることが分かり,信頼感増しますね.

おわりに

他にも色んな機能があるかとおもいますが,とりあえずテストを実行して結果を通知するぐらいのことはかなり簡単にできました.他の機能については必要に応じて調べていきます.

今後試してみたいこととしては,

  • seleniumの機能テストの実行
  • テストが成功したらHerokuに自動デプロイ
  • コーディング規約に従ってるかとかチェック

とか考えてます.

Jenkins実践入門 ?ビルド・テスト・デプロイを自動化する技術 (WEB+DB PRESS plus)

Jenkins実践入門 ?ビルド・テスト・デプロイを自動化する技術 (WEB+DB PRESS plus)