ScientificLinux6.2にJenkinsを導入してみます。
目標はandroid-testも含めた自動ビルドですが、
とりあえず今回は自動ビルドのみです。
【環境とか】
ScientificLinux6.2(VM)
jenkins ver. 1.466
java version 1.6.0_22
【まずは、adbが必要とするJavaのバージョンを確認。】
AndroidはまだJDK1.6推奨?なので、丁度いい。
[root@localhost /]# java -versionjava version "1.6.0_22"OpenJDK Runtime Environment (IcedTea6 1.10.6) (rhel-1.43.1.10.6.el6_2-i386)OpenJDK Client VM (build 20.0-b11, mixed mode)
【adbが必要とするライブラリをyumでサクっとインストール。】
[root@localhost /]# yum install ncurses-develLoaded plugins: refresh-packagekit, securitysl | 3.2 kB 00:00sl-security | 1.9 kB 00:00sl-security/primary_db | 2.7 MB 00:07Setting up Install ProcessResolving Dependencies--> Running transaction check---> Package ncurses-devel.i686 0:5.7-3.20090208.el6 will be installed--> Finished Dependency ResolutionDependencies Resolved===============================================================================================================================================================Package Arch Version Repository Size===============================================================================================================================================================Installing:ncurses-devel i686 5.7-3.20090208.el6 sl 641 kTransaction Summary===============================================================================================================================================================Install 1 Package(s)Total download size: 641 kInstalled size: 1.7 MIs this ok [y/N]: yDownloading Packages:ncurses-devel-5.7-3.20090208.el6.i686.rpm | 641 kB 00:02Running rpm_check_debugRunning Transaction TestTransaction Test SucceededRunning TransactionInstalling : ncurses-devel-5.7-3.20090208.el6.i686 1/1Installed:ncurses-devel.i686 0:5.7-3.20090208.el6Complete!
【jenkinsのyumをダウンロード】
[root@localhost /]# wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo--2012-06-03 08:50:26-- http://pkg.jenkins-ci.org/redhat/jenkins.repopkg.jenkins-ci.org をDNSに問いあわせています... 63.246.20.93pkg.jenkins-ci.org|63.246.20.93|:80 に接続しています... 接続しました。HTTP による接続要求を送信しました、応答を待っています... 200 OK長さ: 75 [text/plain]`/etc/yum.repos.d/jenkins.repo' に保存中100%[==========================================================================================================>] 75 --.-K/s 時間 0s2012-06-03 08:50:27 (6.98 MB/s) - `/etc/yum.repos.d/jenkins.repo' へ保存完了 [75/75]
【jenkinsパッケージの署名を検証するためのキーをインポート。】
RPMバージョン4.1以降は、インストールやアップグレードの際にパッケージの署名がチェックされるため。
rpm --import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key
【yumでjenkinsをインストール】
[root@localhost /]# yum install jenkinsLoaded plugins: refresh-packagekit, securityjenkins | 951 B 00:00jenkins/primary | 16 kB 00:00jenkins 139/139Setting up Install ProcessResolving Dependencies--> Running transaction check---> Package jenkins.noarch 0:1.466-1.1 will be installed--> Finished Dependency ResolutionDependencies Resolved====================================================================================================================================================Package Arch Version Repository Size====================================================================================================================================================Installing:jenkins noarch 1.466-1.1 jenkins 45 MTransaction Summary====================================================================================================================================================Install 1 Package(s)Total download size: 45 MInstalled size: 46 MIs this ok [y/N]: yDownloading Packages:jenkins-1.466-1.1.noarch.rpm | 45 MB 00:34Running rpm_check_debugRunning Transaction TestTransaction Test SucceededRunning TransactionInstalling : jenkins-1.466-1.1.noarch 1/1warning: /etc/yum.repos.d/jenkins.repo created as /etc/yum.repos.d/jenkins.repo.rpmnewInstalled:jenkins.noarch 0:1.466-1.1Complete!
【jenkins起動!】
[root@localhost /]# /etc/init.d/jenkins startStarting Jenkins [ OK ]
【一応プロセスの確認】
[root@localhost /]# ps -ef | grep jenkinsjenkins 3159 1 95 09:20 ? 00:00:03 /usr/lib/jvm/jre-1.6.0/bin/java -Dcom.sun.akuma.Daemon=daemonized -Djava.awt.headless=true -DJENKINS_HOME=/var/lib/jenkins -jar /usr/lib/jenkins/jenkins.war --logfile=/var/log/jenkins/jenkins.log --webroot=/var/cache/jenkins/war --daemon --httpPort=8080 --ajp13Port=8009 --debug=5 --handlerCountMax=100 --handlerCountMaxIdle=20root 3176 1645 0 09:20 pts/0 00:00:00 grep jenkins
【ブラウザからjenkinsを確認。とりあえずVM上のFirefoxからアクセス。】
もし外部からアクセスする場合は、ファイアウォールの設定で8080ポートの解放を忘れずに!!
【Androidプラグインをインストール】
Jenkinsの管理⇒プラグインの管理⇒利用可能タブ⇒フィルタに「Android」と入力
⇒「Android Emulator Plugin」にチェックを入れて「再起動せずにインストール」
【新規ジョブの作成】
プロジェクトは、すごく昔に作りかけたものです。
svnリポジトリはフリーのやつ(unfuddle)を使ってます。
【ビルド環境の設定】
【ビルドの設定】
Antの呼び出しの前にシェルの実行を持ってこないとbuild.xmlファイルが無くてエラーになります。
まさかドラッグドロップで順番を入れ替えられるとは知らなくて、
1~2時間悩みました・・・OTL
【convto16.sh】
環境パス通してandroid update project コマンドでbuild.xmlを作成しているだけです。
export PATH=/var/lib/jenkins/tools/android-sdk/tools:/sbin:/usr/sbin:/bin:/usr/binPATH=/var/lib/jenkins/tools/android-sdk/tools:/sbin:/usr/sbin:/bin:/usr/bincd ConvTo16android update project -p /var/lib/jenkins/workspace/ConvTo16/ConvTo16/ -n ConvTo16
【ビルド実行】
【ダッシュボードでビルド成功を確認】
【apkファイルもちゃんと作られている】
おわり!!!!
【感想】
一回ジョブを作成してしまえばサーバ上で定期実行の自動ビルドができるし、
いちいちモジュールを最新にしなくてもsubversionの最新を勝手に取り込んでくれるので素晴らしい。
RSSとかでビルド失敗だけ通知したりできるので良いですね。
あとはjUnitも合わせて実行できるようにすれば満足できそうだ。