LoginSignup
41
27

More than 5 years have passed since last update.

gitのブランチごとに別のバージョンのアプリをDeployGateで並行して配信する

Posted at

はじめに

AndroidやiOSのアプリを複数人で共同開発したり、同じアプリに関して複数のプロジェクトが並列して走っているような場合、互いに干渉なくgitのfeatureブランチごとに別のバージョンのアプリをDeployGate同時並行して配信したいという場合があります。

このような場合、curlDeployGate Upload APIを呼び出す際に、DeployGateの配布ページを指定するオプションを追加することで、それぞれのブランチごとに別のバージョンのアプリをDeployGate経由で同時配信することができます。

配布ページとは?

配布ページとはDeployGate上にアップロードされた特定のバージョンのアプリ(DeployGateではアップロードごとにリビジョンという通し番号が付与されます)を目的別に分けて配信するための機能です。この機能を使うと、たとえばQAテストやβテストを行っているリビジョンを固定して提供しつつ、並行してエンジニア向けに常に最新版を配信すると行った使い方ができます。

distributionpage.png

配布ページはEvernoteやDropboxの共有リンクみたいなもので、わざわざアカウントを招待しなくても、配信対象者に配布ページのURLをSlackやメールで共有するだけでアプリを配ることができます。また、インストールする側はDeployGateへのサインアップを行う必要がありません。もし配布ページへのアクセスを限定したい場合は、配布ページにパスワードを設定することもできます。

配布ページに対して新しい(または古い)リビジョンのアプリを配信した場合でも、通常のDeployGateと同じように配布ページ経由でインストールしたユーザに通知が届くので、アップデートの配信に関しても心配不要です。

Screen Shot 2018-01-31 at 6.58.36 PM.png
(例) DroidKaigi2017公式アプリ(開発版)の配布ページ

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上では次のように表示されます。

Screen Shot 2018-02-15 at 5.45.50 PM.png

ページの右サイドにある「アプリの配布ページ」という項目に、ブランチ名の配布ページが現れます。もしdistribution_nameで指定したのと同じ名称の配布ページが既にある場合は、そこで配信されるアプリをアップロードしたものに更新&変更することができます。

試しに、ブランチをmasterに切り替えて同じコマンドを実行すると、次のようになります。
899c05a8135ce4fbd3914b774d835675.png

プロジェクトの最新リビジョンは#6にアップデートされ、新しくmasterという配布ページが作られて#6が配布されますが、先程アップロードしたfeatures/project01の方では引き続きリビジョン#5のアプリが配信されています。

この仕組みを使い、QAエンジニアやプロジェクトチームのメンバーへのアプリ共有を配布ページ経由で行っておくと、開発プロジェクトの同時進行やスケジュールに影響や干渉を受けること無く、複数のバージョンのアプリをgitのブランチに連動して任意の対象に対して切り分けて配信することができます。

特定のコマンドを実行するだけなのでCIとの相性もとて抜群です
CIを導入されているプロジェクトの方は、ぜひテスト実行スクリプトの最後にブランチ別の配布ページ指定つきDeployGate Upload APIの呼び出しコマンドを追加してみてください。

メンバーへのアプリ配信の完全自動化で、グループ開発が結構捗りますよ!

41
27
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
41
27