2015
10
06
10
06
AppVeyorを使ってWindowsでPythonプロジェクトのCI
GithubでCIといったらTravisCIと連携がポピュラーだと思う。TravisCIで環境として用意されてるのはUbuntuとOSX。
WindowsでもPythonが使えることが近年はプッシュされている。VisualStudioではPython導入のツールが用意され、Django、Flaskなど有名フレームワークでWebアプリを作るテンプレートがある。それを作ったらAzureでホスティングとか。
そういうわけでPythonを書いたらUbuntuやOSXだけでなく、WindowsのCI環境も欲しいよねというときにAppVeyor。
下の画像はデフォルト状態でlsコマンドでC:/直下のディレクトリを表示したものである。今回使うPythonはもちろん、RubyやGoも用意されているし、データベースとしてMongoDBも入っている。Windowsだからといって決してMS製品のみへ特化しているわけではなさそう。

Github連携はどう使えばいいかというとTravisCIと同様である。GithubアカウントとのOAuth接続を許可し、マイページの自分のリポジトリ一覧から連携したいものをオンにする。あとはプロジェクトのルートにappveyor.ymlを置いてコミット、それをGithubサーバーへ送れば自動でappveyor.ymlの内容に沿ってビルドが始まる。
GithubリポジトリからPythonで最小限のことをやっていそうなappveyor.ymlを探した。
https://github.com/jkbrzt/httpie/blob/master/appveyor.yml
参考になるものを得て書いた自分のPythonプロジェクト用のappveyor.ymlが下記である。テスト用にPythonライブラリであるpillowが必要なプロジェクトになっている。
まずinitで初期化設定を行っている。といっても特にやることはなくて、テストするPythonのバージョンの表示を行っている。これは次に行うenvironmentの次に書けば良かったかも。
initの下にあるenvironmentではビルドテストを行う環境を指定している。Pythonの複数のバージョンで使えるものを書いたので、複数のPython環境を指定している。ビルドテストはそれぞれのPython環境で行われることになる。
installでは文字通り必要なもののインストールを行っている。今回必要なのは実は下から三行のみである。そこでpipをインストール、さらにそれを使ってpillowをインストールしている。
test_scriptではテストコマンドを書いている。
テストが通るとバーが緑色になる。

Github連携でおなじみのバッジもある。デフォルトではTravisCIと似たようなバッジが得られるが、それと差別化してshields.ioを通して下記のようなバッジに変換しているケースが多かった。

https://img.shields.io/appveyor/ci/[your AppVeyor ID]/[repositry name].svg?label=windows%20build
WindowsでもPythonが使えることが近年はプッシュされている。VisualStudioではPython導入のツールが用意され、Django、Flaskなど有名フレームワークでWebアプリを作るテンプレートがある。それを作ったらAzureでホスティングとか。
そういうわけでPythonを書いたらUbuntuやOSXだけでなく、WindowsのCI環境も欲しいよねというときにAppVeyor。
下の画像はデフォルト状態でlsコマンドでC:/直下のディレクトリを表示したものである。今回使うPythonはもちろん、RubyやGoも用意されているし、データベースとしてMongoDBも入っている。Windowsだからといって決してMS製品のみへ特化しているわけではなさそう。

Github連携はどう使えばいいかというとTravisCIと同様である。GithubアカウントとのOAuth接続を許可し、マイページの自分のリポジトリ一覧から連携したいものをオンにする。あとはプロジェクトのルートにappveyor.ymlを置いてコミット、それをGithubサーバーへ送れば自動でappveyor.ymlの内容に沿ってビルドが始まる。
GithubリポジトリからPythonで最小限のことをやっていそうなappveyor.ymlを探した。
https://github.com/jkbrzt/httpie/blob/master/appveyor.yml
参考になるものを得て書いた自分のPythonプロジェクト用のappveyor.ymlが下記である。テスト用にPythonライブラリであるpillowが必要なプロジェクトになっている。
init:
- ECHO %PYTHON%
environment:
matrix:
- PYTHON: C:/Python27-x64
- PYTHON: C:/Python34-x64
- PYTHON: C:/Python33-x64
install:
- ECHO "Filesystem root:"
- ps: "ls \"C:/\""
- ECHO "Installed SDKs:"
- ps: "ls \"C:/Program Files/Microsoft SDKs/Windows\""
- ps: (new-object net.webclient).DownloadFile('https://raw.github.com/pypa/pip/master/contrib/get-pip.py', 'C:/get-pip.py')
- "%PYTHON%/python.exe C:/get-pip.py"
- "%PYTHON%/Scripts/pip.exe install pillow==2.9.0"
test_script:
- '%PYTHON%\python.exe setup.py test'
まずinitで初期化設定を行っている。といっても特にやることはなくて、テストするPythonのバージョンの表示を行っている。これは次に行うenvironmentの次に書けば良かったかも。
initの下にあるenvironmentではビルドテストを行う環境を指定している。Pythonの複数のバージョンで使えるものを書いたので、複数のPython環境を指定している。ビルドテストはそれぞれのPython環境で行われることになる。
installでは文字通り必要なもののインストールを行っている。今回必要なのは実は下から三行のみである。そこでpipをインストール、さらにそれを使ってpillowをインストールしている。
test_scriptではテストコマンドを書いている。
テストが通るとバーが緑色になる。

Github連携でおなじみのバッジもある。デフォルトではTravisCIと似たようなバッジが得られるが、それと差別化してshields.ioを通して下記のようなバッジに変換しているケースが多かった。

https://img.shields.io/appveyor/ci/[your AppVeyor ID]/[repositry name].svg?label=windows%20build