読者です 読者をやめる 読者になる 読者になる

のらねこの気まま暮らし

Perlについてとか、創作についてとか、発展途上の自分と向き合う記録。

Ubuntu12.4にjenkinsを立ててandroidのBuildをできるようにする呪文

AndroidのBuild環境は、できれば統一したい。
複数人で開発していると、それぞれ異なる環境でBuildしているため、他の人の環境だと正しく動かなかったりすることがごくごく稀にある。

Build環境を標準化することとは別に、githubのcommitHook等から自動でBuildできるようにすると楽ちんだったり、ビルドスクリプトを書くのも面倒くさい。

アジャイル開発において自動テストは必須である。

テストが失敗したりビルドや更新の記録を残してプロファイリングしたいなんて話もある。


などなど、CIツールの必要性は今更確認するまでもないので、有名であり弊社でも一度は使われたjenkinsさんを使ってみようとおもう。

jenkinsのインストール

https://wiki.jenkins-ci.org/display/JENKINS/Installing+Jenkins+on+Ubuntu

ここ見れば一発。
とりあえずaptでインストールして、以下の呪文で動作することを確認しましょう。

sudo -H /etc/init.d/jenkins start
curl http://loacalhost:8080

jenkins.myhost.com:80 でJenkinsを待ち受けたい

たぶん80ポートで待ち受けてたりDNSで割り振ったりしてると思うので、jenkinsとは別にロードバランサなりリバースプロキシなりしてる方はそれぞれのツールのドキュメントを参考にしてくださいませ。

ちなむと僕は、Varnishっていうキャッシュサーバーでリバースプロキシしています。
jenkinsのホストにアクセスきたら、`localhost:8091`に振るようにしています。

portの変更

デフォルトの設定は、`/etc/default/jenkins`にあります。suduedit等で下記`JENKINS_PORT`の値を書き換えてください。

JENKINS_PORT="8080"

再起動

sudo -H /etc/init.d/jenkins restart

実際にアクセスしてみよう

URLを叩いて確認。もし動かないようなら各種ドキュメントなり先生に聞くなりしてくれ。


デフォルトでのjenkinsはセキュリティもなにもあったもんじゃないので、[Jenkinsの管理]>[グローバルセキュリティの設定]>[アクセス制御]あたりを設定しておくと良い

※ユーザをサインアップする前に`ログイン済みユーザーに許可`にチェックを入れてしまうと、ログインできずサインアップできずの積み状態になるので、注意。積んだら設定を書き換えれば直せるけれど、それはここでは割愛します。

とりあえずJenkinsのバックエンドはこの設定でコト足りたので完了とする。

jenkinsのPluigins

Pluginのインストール

AndroidのBuildとGithubとの連携で必要なのは以下のplugin

  • GIT plugin
  • Android Emulator Plugin
  • Ant Plugin

それぞれ[Jenkinsの管理]>[プラグインの管理]<[利用可能]の項からインストール可能。
インストール後、Jenkinsを再起動する必要がある。

GITユーザの設定

[Jenkinsの管理]>[システムの設定]>[Git plugin]にgitユーザの情報を入力する

Antの設定

[Jenkinsの管理]>[システムの設定]>[Ant]>[インストール済みAnt]にAntの情報を追加する

Android SDKの設定

[Jenkinsの管理]>[システムの設定]>[Android]>[Android SDK root]にANDROID_HOMEを設定する。
WebIFの作業とは別に、AndroidSDKのインストールが必要となる。

こちらを参考あれ
CUI(CLI)でAndroidプロジェクトを作成・Build環境を整える呪文

今回は、`~/tools/android/sdk`にインストールしたので、そちらを入力。
入力時に不適切なディレクトリだとvalidation errorが表示されるので確認しつつやること。

ANDROID_HOME: ~/tools/android/sdk, PATH: ~/tools/android/sdk/tools

jenkins@ry-m:~$ cd /var/lib/jenkins/tools/
jenkins@ry-m:~/tools$ curl -L -O http://dl.google.com/android/adt/adt-bundle-linux-x86_64-20130522.zip
jenkins@ry-m:~/tools$ unzip adt-bundle-linux-x86_64-20130522.zip
jenkins@ry-m:~/tools$ mv adt-bundle-linux-x86_64-20130522/ android
jenkins@ry-m:~/tools$ android update sdk --no-ui


以上がJenkinsシステム全体の設定。ここからは個々のプロジェクトの設定

ジョブ毎の設定

ビルド手順がようわからなかったのでメモ書き
ビルドの項の先頭に以下のシェルスクリプトを追加する

cd ${WORKSPACE}
export PATH=$PATH:/var/lib/jenkins/tools/android/sdk/tools:/usr/bin

echo UPDATE PROJECT
android update project -p ./ --target android-15

続けて、antの設定を追加する。このとき、デフォルトではなく、インストールしたantの名前を選択すること。

Buildを予約する

問題なくBuildできていればOK