HudsonでAndroidする

手順

  • hudson側
    • hudsonのインストール
    • hudsonを起動
    • hudsonプロジェクトを作成
    • jobの追加
      • ターゲットプロジェクト
      • テストプロジェクト
    • hudsonからビルド
    • hudsonでテスト

hudsonのインストール

http://hudson-ci.org/
からhudson.warをダウンロードして適当なところに配置

Androidプロジェクトをコマンドラインから作成

hudson上でBuildするのにantコマンドを使います。
EclipseではなくコマンドラインからAndroidプロジェクトを作成すると、build.xmlが作成されます

コマンド

android create project \
   --target AndroidAPILv \
   --name プロジェクト名 \
   --path プロジェクトパス \
   --activity アクティビティ名 \
   --package パッケージ

android create project \
   --target 4 \
   --name HelloHudson \
   --path /home/ore/develop/gengo/android/src/HelloHudson \
   --activity HelloHudson \
   --package com.example.hellohudson

Androidプロジェクトをビルド

コマンドラインからプロジェクトを作成すると、build.xmlがデフォでできているので実行する
実行コマンド

ant debug

gitの設定

$ git init
    • .gitignoreの作成

    • gitignoreをaddしてコミット
$ git add .gitignore
$ git commit -m"add gitignore"
    • プロジェクトをコミット
$ git add -A .
$ git commit -m"firstcommit"
$ git --bare init --shared
$ git remote add origin [path]
    • リモートにpush
$ push origin master

Hudsonの設定

  • Hudsonを起動する
    • 起動コマンド
java -jar hudson.war


  • pluginのインストール
    • メニューから"Hudsonの管理"を選択

    • "プラグインの管理"を選択
    • 入れたいpluginを選択して、画面の壱番下の"インストール"ボタンを選択する

    • pluginがインストールされる

    • 完了したらHudsonを再起動する
    • Pluginがインストールされていることを確認


  • 新規ジョブの作成
    • メニューから"新規ジョブの作成"を選択
      • ジョブ名:HelloHudson
      • フリースタイル・プロジェクトのビルドにチェック
      • "ok"をクリック

    • ジョブが作成されているのを確認


Hudsonでビルドする

  • "ビルド実行"を選択
    • ビルドが実行される
  • ビルドが成功したことを確認する
    • 左下のビルド履歴に実行結果が表示される
      • 成功は
      • 失敗は
      • 中断は

  • ビルド結果を確認
    • ビルド履歴から"#1"を選択
    • 画面が変わったら、サイドメニューの"コンソール出力"を選択する


AndroidのTestプロジェクト作成

  • テストプロジェクト作成コマンド
android create test-project \
   -m [Testをしたいプロジェクトのパス] \
   -n [TestProject name] \
   -p [TestProject Path]
android create test-project \
   -m /home/ore/develop/gengo/android/src/HelloHudson \
   -n HelloHudsonTest \
   -p /home/ore/develop/gengo/android/src/HelloHudsonTestore

Eclipseにプロジェクトを追加

HelloHudsonプロジェクトをEclipseに追加する

  • Eclipseの起動
  • Androidプロジェクトの新規作成ウィザードを開く
  • "New Androi Project"ウィンドウで"Create project from existing source"にチェック
  • "Browse"ボタンをクリックしてHelloHudsonプロジェクトのディレクトリを選択
  • 必須項目が自動的に設定されているのを確認
  • "Finish"ボタンをクリック

HelloHudsonTestプロジェクトをEclipseに追加する

  • 上の手順まで実行する
  • Testプロジェクトにターゲットプロジェクトを追加する
    • プロジェクト右クリック
    • Build Path → Configration Build Path
    • Projectsタブを選択して"Add..."ボタンをクリック
    • "HelloHudson"にチェックをいれて"OK"ボタンをクリック
    • ProjectsタブにHelloHudsonがついかされているのを確認し"OK"をクリックして設定画面を閉じる

eclipse上で実行する

まずはターゲットプロジェクトをEclipseで実行します
実行すると下記のようなメッセージが表示される

ターゲットAPIエミュレータがないよと言ってます。
これは"default.properties"に

target=Google Inc.:Google APIs:4

が記述されているからです。
で、自分の環境は1.6はあるけどGoogleAPIではないからです。
コマンドラインからプロジェクトを作成した場合はターゲット4を指定するとGoogleAPIが選択されるようです。
解決するにはAVD追加するかtargetを変更します
以下を記述

target=4

同様にTestプロジェクトの"default.properties"も変更しておく
再度Runして普通に実行できることを確認する。

Testプロジェクトを動かす

  • テストケースの作成

ターゲットプロジェクトに適当なメソッドを追加

    public void show(){
    	Log.v("HelloHudson", "HelloHudson!");
    }
  • Testプロジェクトにshowテストメソッドを追加
    public void testShow(){
    	getActivity().show();
    }

実行する。
緑になっていることを確認

コマンドラインでTestを実行する

以下のコマンドを実行

$ adb shell am instrument -w com.example.hellohudson.tests/android.test.InstrumentationTestRunner

実行結果

com.example.hellohudson.HelloHudsonTest:.
Test results for InstrumentationTestRunner=.
Time: 0.96

OK (1 test)

Hudsonにジョブを追加

HelloHudsonと同じようにジョブを追加する
変更点

  • ビルド手順
  • シェルの実行
ant
adb shell am instrument -w com.example.hellohudson.tests/android.test.InstrumentationTestRunne

実行結果

課題

今回のテスト実行が成功したのはエミュレータがすでに起動しているからです。
エミュレータが起動していないと当然エラーです。
本来のシェル実行コマンドは以下のようにすべきです

emulator -avd [エミュレータ名]
ant
adb shell am instrument -w com.example.hellohudson.tests/android.test.InstrumentationTestRunne

でも、この場合、エミュレータが起動しても次のコマンドが実行されません。
だからといっても

emulator -avd [エミュレータ名] &
ant
adb shell am instrument -w com.example.hellohudson.tests/android.test.InstrumentationTestRunne

こうしたら、エミュレータの起動が完了する前にテストが走ります。
どうすればいいんだろう???