Passion+Action+Sincerely=Success!

週末にのみ趣味でコーディングするおやじの備忘録

いよいよ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に配布できるようにする。

  • まずは、TestFlightにアカウントを作成して、ipaファイルをアップロードする。作成方法は、ここを参照しよう。
  • アップロードしたら、こんな感じにAppsに表示される。

f:id:diinosimple:20141103190852p:plain

  • まずは、自分を含むテスターに、配布するには、該当のアプリを選択し、Permissionsタブを選択し、配布先のUserの左側のチェックボックをクリックして、右下の[Update & Notify]をクリックする。これで自分を含むテスターにEmailが送信される。

f:id:diinosimple:20141103191503p:plain

f:id:diinosimple:20141103191536p:plain

  • ちゃんと以下のようなメールを受信したぜ!

f:id:diinosimple:20141103192136p:plain

  • メール中の[Install]ボタンをクリックし、手順に従って進むことで、iphoneにアプリがインストールできたぜ。

(2) Jenkinsに、TestFlight Pluginをインストールし、システム設定を行う。

[1] まずは、JenkinsにTestFlight Pluginを導入する。

[Manage Jenkins] -> [Manage Plugins]を選択し、[Available]タブからTestflight Pluginの左側のチェックボックスをチェックして、[Install without restart]をクリックする。

f:id:diinosimple:20141103193038p:plain

[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と同じ値を入れる必要がある。

f:id:diinosimple:20141103195738p:plain

  • API Tokenは、Account SettingのUpload APIタブにある値をコピーして入れる。

f:id:diinosimple:20141103195235p:plain

  • Team Tokenは、チーム名->Edit infoを選択して表示される画面にある。

f:id:diinosimple:20141103195406p:plain

以下のようにTeam Tokenが表示されるので、API Token同様にコピーして設定する。

f:id:diinosimple:20141103195605p:plain

 

(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]をチェックしておこう。これで、新しいビルドがアップロードされると、メールで通知される。

f:id:diinosimple:20141103200908p:plain

f:id:diinosimple:20141103201258p:plain

 

最後に、Build Nowで、ジョブを実行してみてくれ!以下のようにメールを受信するはずだ。メール内容に従ってバイナリがインストールできるはずだ。

f:id:diinosimple:20141103201812p:plain

これで、Jenkinsによる、iOSアプリ開発のCI/CD環境が構築できた。単体テストフレームワークとして、Kiwiを組み込んだが、もっと高度なテストができるように、次はAppiumを使ってみようと思う。