osakapy 2014.10 lt (ci for python project)
DESCRIPTION
大阪Pythonユーザの集まり 2014/10 LT CI for Python ProjectTRANSCRIPT
CI for Python Project
osakapy 2014.10.21 LT / Hideo Hattori
whoamiHideo Hattori (github, twitter)
KLab Inc.
Python/Zsh/Go/C
My Python Projects kuroko, otamapy, autopep8, pgmagick,genzshcomp ...
今日お話すること
CI
Travis CI + GitHub
drone.io + Bitbucket
Jenkins + Private Project
CI
CIとはビルドやテスト、インスペクションなどを継続的に実行していくこと (Wikipediaより)
PythonプロジェクトでのCIテスト
コードインスペクション
テスト
unitest, unittest2, mock
nose, pytest
tox
coverage
python setup.py build が通ることを保証するだけでも有効
コードインスペクション
pyflakes, pep8
pylint
Clone Digger
GitHub + Travis CI
Travis CI基本無料
Push / Pull-Req
Notification
Travis CIlanguage: pythonpython: - "2.6"script: - python test/test_autopep8.py
リポジトリに設定ファイルである .travis.yml を配置
通知の設定も .travis.yml で
ドキュメント
Travis CI使った実例.travis.yml for autopep8
.travis.yml for otamapy
nosetest or 普通にテスト実行とか
COVERALLS 連携
C拡張も必要なライブラリを事前にインストールできる
結構自由になんでもできる
Bitbucket + drone.io
drone.io基本無料
Push / (Pull-Req Support?)
Notification (メールのみ)
GitHubとも連携できるよ
単独のPythonバージョンとコマンド実行のみをサポート(toxを使えば大丈夫)
ドキュメント
drone.io使った実例toxを使用pip install --upgrade tox
Python2.7とPython3.3でテストtox -e py27 -e py33
Python3.4はサポートしていない (2014.10時点)
Jenkins + Private Project
JenkinsオープンソースのCIサーバ
Push / Pull-Req / Cron-like ...
自分でホストしないとダメ
プラグイン豊富
設定の柔軟性
Jenkins使った実例Jenkins for genzshcomp
プロジェクト初期から pyflakes や pep8 を使ったコードインスペクションを実施
その後テスト書いてカバレッジをあげていく
通知も柔軟 Chatworkと連携したり
その他
その他
Buildbot
circleci (ドキュメント)
まとめ
まとめ
Travis CI と Jenkins が柔軟でよい
GitHubでホストするならTravis CI安定
ありがとうございました