2013年12月18日

【Jenkins】TestFlightライクなアプリケーション



Jenkins CIのAdvent Calendar 18日目。
言い出しっぺなのに、特にネタが思い浮かばず。

GitHubに公開してるアプリケーションの解説をいたします。

morodomi/Install-APK-and-IPA



このアプリケーションは内部ネットワーク経由でIPAやAPKをインストールする為に適当に作りました。
社内で開発中のバイナリはTestFlightがいくら安全といえども、
社外にバイナリを置くこと自体があまり安全とは言えません。

しかし、アプリ開発者としては、運営者に、
最新のビルドを勝手にインストールしておいて欲しいんですよ。

なんせ、Jenkinsからapkやipaを落として、
端末をケーブルに繋いで、
インストールして、
はい、出来ました〜ってやるのは凄い面倒なので。

Yahoo!ニュースを読んだり、
Facebookを読んだり、
Tweetしたり、
暇だなぁと思いながらコードのリファクタリングしたり。
などなどの時間が取れなくなってしまうのです。

一応、まったく同じソースでは無いですが、
このままの形で運営中で、運営さんからは大変好評です。

運営さんも、エンジニアの手を止めるのは悪いと思っているはずなので、
お互いに無駄な時間を減らす事は、大いに効率改善に繋がると思います。

で、解説ですが、

このアプリでは、app.jsを見てもらえば分かりますが、5ルート用意してあります。

app.get('/', routes.index);
app.get('/builds/:project', routes.builds);
app.get('/apps/:project/:build', routes.apps);
app.get('/plist/:project/:build/:app', routes.plist);
app.get('/apk/:project/:build/:app', routes.apk);

buildsは、指定したプロジェクトのビルド番号リストの取得
appsは、作成結果の.ipaや.apkファイルを取得
plistは、ipaをインストールする為のplistを取得
apkは、apkファイルのURLを指定です。

routes/index.jsには、プロジェクト名を指定します。

プルダウンリストから、プロジェクト名を指定すると、
ajaxで、プロジェクトのビルド番号のリストを取得し、次のプルダウンに置かれます。

ビルド番号リストを選択すると、これまたajaxで、
アプリ一覧を取得して、下に表示させます。
こちらは、ipaとapk両方表示させます。

(UAとかで判別したいなぁと思いながら、面倒なのでそのまま)

さらに、アプリを選択すると、
ipaならplistを、apkならそのままJenkinsのURLをクリックする事になり、
DLが可能という訳です。

plilstは、ipaを解凍して、中身のplistを読み込んでいます。

これで、簡単にインストール出来るようになりました。

Pull Requestお待ちしております。