T

TitaniumとJasmineとJenkinsでCI

今更ながら、Tiで作ったアプリの自動テスト環境を見直してみました。以前構築したことはあったのですが、結局途中で動かなくなって放置していました。今では反省しています。

まず「Titanium Mobile + Jasmine + Jenkins でiPhoneアプリの自動テスト組んでみたよ」という秀逸なエントリがあるので、そちらをヒントにやってみました。いくつか変更しないと動かなくなっていたので、こちらにForkしてありがたく使わせてもらっています。使い方は上のエントリとほとんど同じです。

まず @astronaughts さんの変更をマージして、最近のTiのプロジェクトのSDKのバージョンの取得方法に変更しました。それから、Tiのシミュレータは$HOME/Library/Application Support/iPhone Simulator/6.0/Applications/XXXXX/アプリ名/以下をTi.Filesystem.resoucesDirectoryとするのですが、サンドボックス化が甘くて相対パスで指定すれば実行ユーザの権限で可能な限りどこにでもファイルを書き出すことができるので、Jenkins側のジョブとプロジェクト名を同じにすれば、Jenkinsのworkspaceにログを出力するよう変更してみました。ここだけ気をつければ、あとはid:ikeike443さんの記事そのままで動作します。

手順:

$ brew install jenkins
$ ln -nfs /usr/local/Cellar/jenkins/1.484/homebrew.mxcl.jenkins.plist ~/Library/LaunchAgents/
$ launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.jenkins.plist

// Tiのプロジェクトを作成したら…
$ cd YOUR_PROJECT
$ git init
$ git add .gitignore
$ git commit -a -m 'init'
$ cd Resources
$ mkdir {vendor,lib,spec}
$ cd vendor
$ git clone git://github.com/yagitoshiro/jasmine-titanium.git
$ cd jasmine-titanium
$ git submodule init
$ git submodule update
$ cd ../../../
$ vi .gitmodules
// .gitmodulesの編集。中身はこれ
//
[submodule "jasmine-titanium"]
        path=Resources/vendor/jasmine-titanium
        url=git://github.com/yagitoshiro/jasmine-titanium.git
//
$ git add .gitmodules
$ git commit -a -m 'init'

Jenkinsで新規のジョブを作成します。プロジェクト名と同じ名称でジョブを新規作成してください。Gitのレポジトリは上で作ったプロジェクトのディレクトリになります。ビルドはid:ikeike443さんのエントリのまんまですがシェルの実行で

git submodule init
git submodule update
cd Resources/vendor/jasmine-titanium
git submodule init
git submodule update
cd ../../
python vendor/jasmine-titanium/script/specs.py -r jenkins

としました。またビルド後の処理としてJUnitテスト結果の集計を選択し、ログの場所は「test-result/*xml」とします。

Posted by on 10月 12, 2012 in Titanium

コメントを残す