JenkinsでAndroidアプリを自動でビルドしDeployGateに公開してみる

  • Pocket
  • このエントリーをはてなブックマークに追加
  • 172 follow us in feedly

まえがき

今回はちょっと実践的な?Jenkinsの使い方をしてみる。

なにをやるかっていうと、JenkinsでAndroidアプリをビルドしてapkファイルを作成し、DeployGateにアップロードして実機にインストールするということをやってみる。

開発用のマシンからEclipseでビルドして実機に取り込むのが1番簡単で手をつけやすい方法だけど、複数人で開発している時や複数端末に一斉にインストールしたい時なんかには便利だと思います。

またビルド・テスト(今回は実装していないが)をJenkinsを使って一貫性をもたせるのも色々と便利かと

開発環境

  • Jenkins (さくらのVPS上に構築)
  • サーバーOS CentOS6.5
  • ビルドツール ant 1.9.3
  • DeployGate フリーのプラン
  • コードリポジトリ GitLab

こんな感じの構成でのトライ!

今回のトライの流れ

  • 1.ローカルマシンのEclipseでAndroidアプリをちょろちょろ作る
  • 2.GitLabのリポジトリにプッシュする
  • 3.JenkinsさんがGitLabからソースコートを拝借してくる
  • 4.JenkinsさんがAndroidアプリのプロジェクトを更新する
  • 5.JenkinsさんがAndroidアプリのビルドを行う(xxx.apkファイルの作成)
  • 6.Jenkinsさんが生成されたapkファイルをDeployGateにアップロードする

こういった流れになっています。(4)の工程に関してはビルド工程が複雑なものだと、Jenkins側で更新しないほうがいいかもしれないけれど、今回はこのままでいきます。

Androidアプリプロジェクトの.gitignoreの設定

とりあえず、作成するアプリの.gitignoreを以下の様な感じで書いておきました。

# built application files
*.apk
*.ap_
 
# files for the dex VM
*.dex
 
# Java class files
*.class
 
# generated files
bin/
gen/
 
# Local configuration file (sdk path, etc)
local.properties
 
# eclipse settings
.classpath
.project
.settings/

# junit-reports
junit/

こちらのサイトを参考にさせていただきました。Eclipse以外にAndroidStudioだったりIntelliJIDEAなんかで作っている場合は適宜変更しておく必要があります

Eclipse で Android アプリを作る時の .gitignore

Eclipse で Android アプリを作る時の .gitignore

とりあえず、これでGitLabのリポジトリにプッシュしておきます。

Jenkinsのサーバー(CentOS)にAndroidSDKをインストール

ほいで、次にJenkinsさんがAndroidアプリのビルドが行えるようにAndroidSDKをインストールしておきます。

cd /opt/
wget http://dl.google.com/android/android-sdk_r20.0.3-linux.tgz
tar -xzf android-sdk_r20.0.3-linux.tgz
 
# 他の必要なパッケージをインストール
yum install glibc.i686 glibc-devel.i686 libstdc++.i686 zlib-devel.i686 ncurses-devel.i686 libX11-devel.i686 libXrender.i686 libXrandr.i686
 
# SDKのインストール(2回以上実行しておいたほうがいいかも)
./android-sdk-linux/tools/android update sdk --no-ui
./android-sdk-linux/tools/android update sdk --no-ui

SDKのインストールにはかなり時間がかかりました(3時間ほど?)ので時間に余裕がある時に済ませておくといいでしょう。また、1回めのupdateではantでビルドするのに必要なツールがインストールされなかったので2回回しました。

Jenkinsのビルド手順

ほいで、Jenkinsのビルで手順をこんな感じで設定

1.シェルの実行

最初のスクリプトでは『android』コマンドを使って、プロジェクトを更新する

# android project update
/opt/android-sdk-linux/tools/android update project --path ./ --target android-17

2.Antの呼び出し

ターゲットには『debug』を設定しておく。

これでビルド後『bin/』フォルダに『起動時のアクティビティ名-debug.apk』が出来上がる

3.シェルの実行

最後に『curl』コマンドで出来上がったapkファイルをDeployDateにアップロードする(tokenに関しては事前にDeployGateのページで取得しておく)『https://deploygate.com/api/users/ユーザー名/apps』にはDeployGateのユーザー名を入力。

curl -F "file=@bin/アクティビティ名-debug.apk" -F "token=XXXXXXXXXXXXXXXXXXXX" -F "message=$BUILD_DISPLAY_NAME" https://deploygate.com/api/users/ユーザー名/apps

っと。これで一様の準備はできたので実行してみるとなんとか青色でビルドが通ってDeploygateにまでアップロードすることができました。

デバッグ用のapkファイル名がアクティビティ名に依存してしまうのが残念なのでどうにか工夫してやってみたいところですが…

jenkins-android-deploygate-2

jenkins-android-deploygate-1

あとはビルドトリガで好きなように設定してあげれば、コミット一つで手元の端末にインストールするまでの流れを自動化できまーす。

あとがき

DeployGateがcurl1つでアップロードできるのがとても便利でした!Deploygate用のJenkinsプラグインもあったりするようなので今度使ってみようかなと思います

おすすめ書籍

Androidのなかみ InsideAndroid
Tae Yeon Kim Hyung Joo Song Ji Hoon Park Bak Lee Ki Young Lim
パーソナルメディア
売り上げランキング: 23,964

関連記事

android-library-1android-library-1.png

Android開発で外部ライブラリを使う方法のメモ

まえがき 今回はAndroidアプリ開発で外部ライブラリのプロジェクト...

記事を読む

Phing×JenkinsでビルドされたレポートをAmazonS3に自動アップロードする

まえがき JenkinsのPublish HTMLプラグインなんかを使...

記事を読む

Screeny Shot 2013-07-29 3.08.50.png

TitaniumMobileでSafariで開くを実装する

  まえがき TitaniumMobileでiOSやAndroidのデ...

記事を読む

Jenkinsにログインできなくなった時の対処方法

まえがき とうとう、今日Jenkinsの設定を誤ってログインできなくな...

記事を読む

images

無線LANを使ってAndroidアプリの実機デバッグを行ってみる。

まえがき 今回は開発中のAndroidアプリをUSBケーブルを挿さな...

記事を読む

新着記事

no image

PHPでRubyのirbっぽいインタラクティブなスクリプトが実行できる「boris」

まえがき PHPでもRubyのirbみたいなことがしたくて探してみたと...

記事を読む

2015年の抱負と去年の振り返り〜よちよちWEB業界1年経験して〜

まえがき あけましておめでとうございます。今年もどうぞよろしくお願いし...

記事を読む

Java SE 7 Bronze試験(1Z0-802)を受けてきました

まえがき 以前から少し受けてみたかった試験『Java SE 7 Bro...

記事を読む

HubotでJenkinsのジョブを実行する

まえがき HubotをつかってJenkinsのジョブをじっこうしてみた...

記事を読む

no image

Hubotをforeverでデーモン化する

まえがき 今回はHubotをforeverを使ってデーモン化してみた時...

記事を読む

スポンサーリンク

PAGE TOP ↑