はじめに
AndroidやiOSのアプリを複数人で共同開発したり、同じアプリに関して複数のプロジェクトが並列して走っているような場合、互いに干渉なくgitのfeatureブランチごとに別のバージョンのアプリをDeployGateで同時並行して配信したいという場合があります。
このような場合、curl
でDeployGate Upload APIを呼び出す際に、DeployGateの配布ページを指定するオプションを追加することで、それぞれのブランチごとに別のバージョンのアプリをDeployGate経由で同時配信することができます。
配布ページとは?
配布ページとはDeployGate上にアップロードされた特定のバージョンのアプリ(DeployGateではアップロードごとにリビジョンという通し番号が付与されます)を目的別に分けて配信するための機能です。この機能を使うと、たとえばQAテストやβテストを行っているリビジョンを固定して提供しつつ、並行してエンジニア向けに常に最新版を配信すると行った使い方ができます。
配布ページはEvernoteやDropboxの共有リンクみたいなもので、わざわざアカウントを招待しなくても、配信対象者に配布ページのURLをSlackやメールで共有するだけでアプリを配ることができます。また、インストールする側はDeployGateへの**サインアップを行う必要がありません。**もし配布ページへのアクセスを限定したい場合は、配布ページにパスワードを設定することもできます。
配布ページに対して新しい(または古い)リビジョンのアプリを配信した場合でも、通常のDeployGateと同じように配布ページ経由でインストールしたユーザに通知が届くので、アップデートの配信に関しても心配不要です。
(例) [DroidKaigi2017公式アプリ(開発版)の配布ページ](https://deploygate.com/distributions/55e453187e765b251bf485d2e81d7bd22aa6aca9#install)gitのブランチごとに配信ページを自動作成
あまり知られていないのですが、実はこのDeployGateの配信ページ機能はグループ機能を使っている場合は作成上限数が無制限です。なので極端な話をすれば**「gitの全てのbranchごとに配布ページを作る」**みたいなワイルドな使い方も可能です。
とはいえ、gitのブランチを切るたびにブラウザ上から配布ページを作成する操作を行うのは大変面倒です。そこでUpload APIを呼び出す時にオプションを指定して、アプリのアップロードと同時に配布ページを自動作成すると便利です。
実際にアプリをアップロードするには、コマンドラインで以下のようにしてDeployGate Upload APIを呼び出します。
$ curl \
-F "token=[DeployGateのAPIトークン]" \
-F "file=@app-debug.apk" \
-F "message=git-hash:`git rev-parse --short HEAD`" \
-F "distribution_name=`git rev-parse --abbrev-ref HEAD`" \
https://deploygate.com/api/users/[DeployGateのユーザ名]/apps
APIトークンはDeployGateのアカウント設定から確認することができます。アップロード先のURLには自身のユーザ名を使用してください。
ここで配布ページを自動生成&配布設定するために必要なのはdistribution_name
パラメータです。今回はgitのブランチ名を取得して指定しましたが、任意の名前にすることができます。message
は任意ですが、混乱しないようにハッシュやコミットログを付けると良いでしょう。その他のオプション指定もあるので、詳しくはAPIのリファレンスを参考にしてみてください。
このようにしてアプリをアップロードすると、DeployGate上では次のように表示されます。
ページの右サイドにある「アプリの配布ページ」という項目に、ブランチ名の配布ページが現れます。もしdistribution_name
で指定したのと同じ名称の配布ページが既にある場合は、そこで配信されるアプリをアップロードしたものに更新&変更することができます。
試しに、ブランチをmasterに切り替えて同じコマンドを実行すると、次のようになります。
プロジェクトの最新リビジョンは**#6にアップデートされ、新しくmaster
という配布ページが作られて#6が配布されますが、先程アップロードしたfeatures/project01
の方では引き続きリビジョン#5**のアプリが配信されています。
この仕組みを使い、QAエンジニアやプロジェクトチームのメンバーへのアプリ共有を配布ページ経由で行っておくと、開発プロジェクトの同時進行やスケジュールに影響や干渉を受けること無く、複数のバージョンのアプリをgitのブランチに連動して任意の対象に対して切り分けて配信することができます。
特定のコマンドを実行するだけなのでCIとの相性もとて抜群です。
CIを導入されているプロジェクトの方は、ぜひテスト実行スクリプトの最後にブランチ別の配布ページ指定つきDeployGate Upload APIの呼び出しコマンドを追加してみてください。
メンバーへのアプリ配信の完全自動化で、グループ開発が結構捗りますよ!