Posted at

TravisCIを使ってみる

More than 3 years have passed since last update.

Shizuoka.py #4 に参加できそうにないのでブログに書いておく。

決して去年、忘年会でShizuoka.goでShizuoka.pyに喧嘩を売ったからとか、

巳年じゃなくなったから、参加しないとかじゃない><。

ただ来年もGoで静岡中部の覇権を取りにいく。

PythonをCIで回した事がないので、CI周りの話をしてみようと考えて居たんだけど、

折角なので最近Goとかで使ってみようと思っているサービス、

『TravisCI』を使ってみようと考えた。


CIとは

継続的インテグレーション と呼ばれ、

自動テストを継続的に行う事で品質を保持する手法です。

今回もそうですが、ソース管理と同時にテスト実行まで行う感じが多いです。

『Jenkins』が有名です。


TravisCI とは

GitHubのリポジトリに設定ファイルを置き、それをビルドしてくれるっていうサービスです。


  • GitHubにプッシュする

  • CIが回る

  • メールが届く

という感じのサービス。


簡単なテストを用意

今回は『py.test』で行う事にします。

会場にいる人が何が多いのか知りたいところです><。


インストールする

>> pip install pytest



sample_test.py

def func(x):

return x + 1

def test_answer():
assert func(3) == 4



実行

>> py.test sample_test.py

======================== test session starts ========================
platform linux2 -- Python 2.7.6 -- py-1.4.26 -- pytest-2.6.4
collected 1 items

sample_test.py .
===================== 1 passed in 0.01 seconds ======================


Pythonの勉強会なのにこれでPython書くのが終了っていう。。。


TravisCIの設定ファイルを作成

「.travis.yml」をプロジェクトのトップに作成します。


.travis.yml

language: python

python:
- 3.2
- 3.3
install:
- pip install pytest
script:
- py.test sample_test.py

Python複数バージョンで実行できるんですね。

2系、3系でテストしたい人多いでしょうから、これは助かりますね。


GitHubにリポジトリを作成

CIしたいプロジェクトのリポジトリを作ります。


TravisCIでリポジトリを設定

サービスにアクセスして、

GItHubアカウントでログインします。

ONにする

プロジェクトのリポジトリをONします。


GitHubにPush

test_sample.py .travis.yml を登録します。

まぁGit周りは割愛。

ぷっしゅ!


ビルド結果

プッシュと同時にCIが開始されます。

ビルド結果がサービス画面に表示されます。

Web画面

メールも届きます

メール

ログインを行う前のサービス画面を見ればわかりますが、

実行結果は全世界に公開されてしまいます。


エビデンスについて

一番簡単な実行例を行いました。


  • before_script

  • after_success

  • after_failure

  • after_script

などでそれぞれのタイミングでスクリプトを設定できます。


Tips

CIがpassしているか?を画像で確認できます。

master

この画像はmasterブランチがどういう状態かを表示するものです。

READMEに貼ってたりするといいかもですね。

PullRequest周りも色々あるみたい。


May the Source be with you

というように、簡単にCIをやれる時代になったわけです。

有料のサービスでPrivateリポジトリもできるようですね。

Jenkins等ローカルで行いたいなら

「virtualenv」で複数バージョンを管理して、

「tox」でテストを行う。とかで可能ですね。

※時間があれば、それを持っていくつもりでした。

Shizuoka.go静岡ITPro勉強会忘年会2014 もよろしくね。