いよいよTestFlightをJenkinsに組み込み、バイナリの自動配布を行う。
以前の投稿までで、GitにiOSプロジェクトをコミット後、自動的にビルドとテストを実行する、いわゆるContinuous Inetgration環境が構築できた。
今回は、さらにContinuous Deploymentっぽく、TestFlightによるバイナリの自動配布まで自動化するぜ!
おおまかに以下の3つのStepを実行する必要があるよ。
- [Step1] まずは、ここまでで作成できた.ipaファイルを、TestFlightで自分のiphone端末に配布できるようにする。
- [Step2] Jenkinsに、TestFlight Pluginをインストールし、システム設定を行う。
- [Step3] JenkinsジョブのPost-build Actionに、組み込んで、作成されたipaファイルを自動的にTestFlightにアップロードし、TestFlightに登録されているDistribution Listに配布する。
(1) IPAファイルを、TestFlightで自分のiPhoneに配布できるようにする。
- まずは、自分を含むテスターに、配布するには、該当のアプリを選択し、Permissionsタブを選択し、配布先のUserの左側のチェックボックをクリックして、右下の[Update & Notify]をクリックする。これで自分を含むテスターにEmailが送信される。
- ちゃんと以下のようなメールを受信したぜ!
- メール中の[Install]ボタンをクリックし、手順に従って進むことで、iphoneにアプリがインストールできたぜ。
(2) Jenkinsに、TestFlight Pluginをインストールし、システム設定を行う。
[1] まずは、JenkinsにTestFlight Pluginを導入する。
[Manage Jenkins] -> [Manage Plugins]を選択し、[Available]タブからTestflight Pluginの左側のチェックボックスをチェックして、[Install without restart]をクリックする。
[2] 以前の投稿までに作成したMyLocations-developジョブに、TestFlightに関する設定を行う。
TestFlight PluginはTestFlight Upload APIを利用してアップロードを行うため、API TokenをJenkinsに登録しておく必要がある。「Manage Jenkins」を選択し、「Configure system」を開く。この設定画面の一番下にTestFlight用の設定項目が追加されているので、「追加」ボタンをクリックして設定を追加する。
- Token Pair Nameは、なんでも良いが、後のStep3で使うので覚えておく。API Tokenと、Team Tokenは、TestFlightのAccountと同じ値を入れる必要がある。
- Team Tokenは、チーム名->Edit infoを選択して表示される画面にある。
以下のようにTeam Tokenが表示されるので、API Token同様にコピーして設定する。
(3) JenkinsジョブのPost-build Actionに、組み込んで、作成されたipaファイルを自動的にTestFlightにアップロードし、TestFlightに登録されているDistribution Listに配布する。
以前の投稿までに作成した、MyLocations-developのジョブに、組み込んでみよう。
- MyLocations-developジョブの[Configure]を選択し、一番最後の[Add post-build action]から、[Upload to Testflight]を選択する。
- Token Pairには、前のステップ2で作成した、Token Pair Nameと同じものを設定する。あとは、任意で、Append changelog to build notesをチェックしよう。
- [Advanced] 設定で、もっとも重要なのがDistribution Listsだ、これは、Test Flightに設定してあるDistribution Listsを設定する。私の場合は、TestFlightsに、Developerというリストがあるので、これを設定した。これでDeveloperに登録されている自分自信に配布される。
- 忘れずに、[Notify Team]をチェックしておこう。これで、新しいビルドがアップロードされると、メールで通知される。
最後に、Build Nowで、ジョブを実行してみてくれ!以下のようにメールを受信するはずだ。メール内容に従ってバイナリがインストールできるはずだ。
これで、Jenkinsによる、iOSアプリ開発のCI/CD環境が構築できた。単体テストのフレームワークとして、Kiwiを組み込んだが、もっと高度なテストができるように、次はAppiumを使ってみようと思う。