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)」の下に追加します。
スクリプトは次のように記述します。
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)」の下に追加します。
スクリプトは 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 ファイルへのパスを示す環境変数があったら便利なんすけどねー、どやんすー。