のらねこの気まま暮らし

技術系だけど、Qiita向きではないポエムとかを書くめったに更新されないヤツ

jenkins経由でBuildしたAndroidのAPKファイルをDeployGateにPushする呪文

DeployGateについて

deploygate

mixiが提供しているAndroidのアプリ配布ツール。「開発中のアプリを一瞬で手元へ」届けてくれる。
クックパッドやカヤックといった業界おなじみの企業が導入しているので、実績もある。弊社でも使っている。

Webの管理画面やAPI経由でAPKファイルをアップロードすると、DeployGateのAndroidアプリを通して、許可したユーザの端末にアプリをインストールできるようになる。

料金プランはいくつかあるが、無料で利用することもできる。どのプランにせよ、10日間は無料でお試しできるトライアル期間もあるので、Androidの開発をしていてアプリの配布に困ってる方にはおすすめだ。
無料プランは2アプリまで登録が可能で、個人開発であり、逐次削除すればいいし、そんな超速で量産するつもりもないので、ひとまずは無料プランで継続しようと思っている。


前回の記事は、Ubuntuに立てたと言ったが、それはさくらインターネットのVPS上で、AndroidデバッグをするにもいちいちAPKファイルをローカルに持ってきてインストールしないといけない。
それは面倒だし、だれもが「お前はアホか」と言いたくなるような手間である。

しかし、たとえばjenkinsさんでBuildして成功したら手元の端末にUSBなしでアプリが配布されたらなんと便利なことか。USB持ち歩かなくてもいいし、手元のMBAAndroid開発環境を用意しなくてもよい。


もちろん、そんな理想郷ってわけではないのだけれど、勉強も兼ねて、そういう環境を用意して見ることにした。

jenkinsからのdeploy

さて、ゴールは明確だ。
jenkinsのビルド後の処理にDeployGateのAPIを叩くように設定すればいい。

DeployGate Plugin

jenkinsには、DeployGateと連携するためのPluginが幾つか提供されている。
DeployGateの公式ページにも紹介がある。

以下の二点だ。

上のURLは @bols さんが作られたplugin。jenkinsのシステムの設定でAPI Keyとユーザ名を登録してBuild後に送信するファイル名を送信する。こちらは公式Pluginとして提供されているので、jenkinsの管理画面からインストール可能だ。悲しいことに、システムの設定でAPI Keyとユーザー名の登録情報を参照できない(登録してからページをリロードしても、フォームは空欄のままで登録してるのかしてないのかわからない)ということと、プロジェクトごとにAPK Keyとユーザを設定できないので、見送りにした。

僕が登録したのは、下記の @jfsso の配布しているファイル。こちらはjenkinsの設定のPluginの高度な設定から上記リンク(Twitterの発言)からダウンロードできるhpiファイルをアップロードすれば使えるようになる。こちらはプロジェクトごとにAPI Keyとユーザを設定できるので、こちらを採用。

はまったこと。

上記どちらもためして、どちらもうまく行かなかったことがある。指定するファイル名だ。
当初僕は、workspaceからの相対パス

bin/Activity.apk

というように指定してたのだが、どちらのPluginでもうまく動かない。
jenkinsの仕組み的にアクションごとのコマンドは保持されないらしく、ビルド時にcdで移動したワークスペースとは別のところにいるらしい。

なので、下記のように環境変数`WORKSPACE`を指定してやるとjenkins内で適切に処理してくれるようになる。これは、 @jfsso 氏のPluginの管理画面にヒントとして書かれていた。@jfsso++

${WORKSPACE}/bin/Activity.apk

まとめ

ひとまずデプロイゲートによる配布はこれで可能になった。
とはいえまあ・・・使ってて思うんだけど、mixiさん、APKファイルの受付に失敗したら200のステータスではなく401とか失敗を返して欲しいの。200って帰ってきて成功しぜ!って管理画面を見てみても、更新はされておらず、ふぇぇと悩んでしまう。

とはいえ、こういう問題に何時間ハマったのか・・・僕もまだまだ未熟である。


次はPhoneGapのビルドについて書くよ!