Android/iOSアプリを Azure Pipelines から DeployGate に配信する

Azure Pipelines でビルドした Android や iOS アプリを DeployGate に配信します。

DeployGate はモバイルアプリをテスターやβ版ユーザーに配布するサービスです。 Microsoft 系のサービスだと App Center にアプリ配布機能があるのですが、DeployGate は日本のサービスで(クライアントアプリ含め)UI が日本語である点と、一つのアプリをグループごとに配信管理(会社のお偉いさんた達には Stable を、同僚グループには最新版を、とか)できるのが気に入っています。

DeployGate のユーザー名と APIキーの取得

1つ目は、DeployGate でユーザーを作ったときのユーザー名を得ておきます。 2つ目は https://deploygate.com/settings にアクセスして「API key」に表示されてる値を得ます。

Azule Pipelines にタスクを追加

DeployGate 用のタスクは残念ながら無いので、Bash Script でやります。

Android の場合

Android の場合は、Bash のタスクを「Signing and aligning APK file(s)」の下に追加します。

image.png

スクリプトは次のように記述します。

curl \
  -F "token=<DeployGateAPIキー>" \
  -F "file=@$(build.binariesdirectory)\$(BuildConfiguration)\<APKファイル名>" \
  -F "message=<デプロイ時のメッセージ>" \
  https://deploygate.com/api/users/<DeployGateユーザー名>/apps
  • <DeployGateAPIキー> - 先に取得しておいた DeployGate の APIキー
  • <DeployGateユーザー名> - 先に取得しておいた DeployGate の ユーザー名
  • <APKファイル名> - ビルド・サインされた APK ファイル(com.mycompany.awesomeapp-Signed.apk など)
  • <デプロイ時のメッセージ> - DeployGate へのこの配信に付与するメッセージ(最新のgitコミットログを代入できるとよいんだけど…)

<APKファイル名> は、初見では分からないと思うので、一度ビルドして Artifact に保存されたファイル一覧を確認するとよいと思います。くれぐれも「サイン済み」の「-Signed」が付いた apk ファイルを指定してください。

iOS の場合

iOS の場合は、Bash のタスクを「Copy Files to: $(build.artifactstagingdirectory)」の下に追加します。

image.png

スクリプトは Android とほぼ同じように、次のように記述します。

curl \
  -F "token=<DeployGateAPIキー>" \
  -F "file=@$(build.artifactstagingdirectory)/<ipaファイルへのパス>" \
  -F "message=<デプロイ時のメッセージ>" \
  https://deploygate.com/api/users/<DeployGateユーザー名>/apps
  • <DeployGateAPIキー> - Android 側と同じ
  • <DeployGateユーザー名> - Android 側と同じ
  • <ipaファイルへのパス> - ビルドされた ipa ファイルへのパス(xxx/bin/iPhone/Release/AwesomeApp.ipa など)
  • <デプロイ時のメッセージ> - Android 側と同じ

<ipaファイルへのパス> も、一度ビルドして Artifact を見るのがよいと思います。

まとめ

Azure Pipelines を使う人は DeployGate にあまり馴染みがないと感じるので紹介してみました。 これは Pipelines の Builds じゃなくて Releases の方でやるべきかな?わからん。

signed-apk や ipa ファイルへのパスを示す環境変数があったら便利なんすけどねー、どやんすー。