これまでのあらすじ。
VPSでJenkinsを使ってAndroidのテストの自動化を図ろうとしたパトさん。しかし、いきなり外部環境かつローカルでも成功させていなかったテストがうまくいかなかったので、まずはMacのローカル環境でテストが成功するのを試しているのだった。
今までの記事。
次にやってみるのは、やはりというか、ソース管理ツールからcloneしてのビルド。特に、Androidのテストの場合はプロジェクトが2つあるので、2つのプロジェクトをcloneする必要がある。
参考にしたサイトは以下。
Jenkinsで1つのジョブで複数のGitリポジトリをビルドする方法
参考サイトに書いてある通り、gitプラグインだけだとうまくいかない?2つのリポジトリ(アプリとテストの)を指定したら、指定ディレクトリに両方ともcloneしようとしてエラーになって落ちた。
ということで、作業一覧。
- Jenkinsの管理より、プラグインの管理へ。Git PluginとMultiple SCMs Pluginをインストールする
- 設定より、ソースコード管理システムからMultiple SCMsを選択する
- gitリポジトリを2つ追加する(アプリとテスト)
- リポジトリ毎に『高度な設定』ボタンが2つあるが、下のほうの『高度な設定』ボタンを押す
- Local subdirectory for repoに、cloneするディレクトリ名を入力する
- Unique SCM nameに、ユニークな名前を付ける(私はgit1, git2と付けた)
- それ以外はほぼ前回と変わらず。ビルドの項目にて、ビルド手順の追加から、シェルの実行を選択。cloneされたディレクトリを対象にプロジェクトのアップデートを行なう。
cd /Users/hoge/Documents/workspace/helloandroid /Applications/android-sdk-mac_86/tools/android update project -p . cd ../helloandroidtest /Applications/android-sdk-mac_86/tools/android update test-project -m ../helloandroid -p .
- ビルド手順の追加からAntの呼び出しを選択する。
ターゲットにclean debug install testと入力。
高度な設定を押して、ビルドファイルを指定する。ここでは、
/Users/hoge/Documents/workspace/helloandroidtest/build.xml
となる。 - 保存する。
- ビルドを実行してテストが通っていれば成功!
肝はなんといってもMultiple SCMs Plugin。Androidのように複数のプロジェクトを使ってテストをするような場合に重宝するのではないでしょうか?Unique SCM nameが重要っぽいので、ここはちゃんと個別の名前にするようにしましょう。普通にリポジトリ名でもよい気がする。
オマケ情報。
私はBitBucketにサンプルのAndroudプロジェクトを置いて試しているのですが、BitBucketにSSH用の公開鍵(id_rsa.pub)を登録していたのですが、コマンドラインからだとcloneできるのに、Jenkins経由だと、なぜかcloneできず。
Jenkinsのユーザも自分のユーザ名にしているにも関わらず、cloneできないので、不思議に思っていたのですが、id_dsa.pubをBitBucketに登録したところ、なぜかJenkisからもcloneできるようになりました。なんでかはわかりません。詳しく調べようとあんまり思わなかったので、この問題はここまで。