BitriseのiOS Auto Provisionを導入してAdHoc配信のためのUDIDの更新作業をブラウザ上でぽちぽちするだけで完結させる話

[Diverse Advent Calendar](https://qiita.com/advent-calendar/2018/diverse) 2018の13日目です。

昨日は @tyoshihisa さんの[RoomにCoroutineサポートが入ったので触ってみた](https://qiita.com/tyoshihisa/items/7ebfe58bee5dd994c09a)というお話でした。
興味深いですね！

## 継続的UDIDのアップデート

Diverseでは継続的インテグレーションのためのプラットフォームとしてBitriseを採用していますが、iOSアプリをBitriseを使ってAdHoc配信する際に断続的に発生するのがProvisioning Profileに含まれるUDIDの更新作業となります。
UDIDの更新作業はそう頻繁に発生するものではありませんが、社員の入退社時や、機種変更時など断続的に発生するものとなり、集中して発生するとなると更新作業にかかる負担も無視できないものとなります。

そこでBitriseが公式に提供している`iOS Auto Provision`を導入することでその負担を軽減しましょうというのが本記事の目的です。

## 「iOS Auto Provision」ワークフローを導入する以前と以後

「iOS Auto Provision」ワークフローを導入する以前では

1. developer.apple.comに行きUDIDの追加・削除をした後にProvisioning Profileを更新する
- Bitriseが提供しているスクリプトを用いてProvisioning Profileを生成する
 ![image.png](https://qiita-image-store.s3.amazonaws.com/0/41906/dba7fffc-49fd-fb34-1103-ffe0a4850baa.png)
- BitriseのCode Signingに更新したProvisioning Profileをアップロードする
- Bitriseで配布処理を走らせる

という手順を踏む必要があります。
この手順の中にスクリプトをたたく必要があったり、そもそもスクリプトをたたく際にアプリをビルドできる状態にしておく必要があるなど自ずとProvisioning Profileを更新するのはエンジニアであるという認識が習慣づけられていました。

これを「iOS Auto Provision」ワークフローを導入すると2と3をすっ飛ばして

1. developer.apple.comに行きUDIDの追加・削除、Mobile Provisioning Profileを更新する
2. Bitriseで配布処理を走らせる

だけで完結できるようになります。しかも行う作業はブラウザでぽちぽちするだけです。なのでエンジニアでなくても手順さえ守れば誰でも更新作業ができることになりますね！

では実際に「iOS Auto Provision」ワークフローの導入の流れと注意事項について見ていきましょう。

## 「iOS Auto Provision」ワークフローを導入する準備

「iOS Auto Provision」ワークフローを導入するためには事前に準備をしておく必要があります。

```
※ なお便宜的に以下で「プロジェクトページ」と呼んでいるものは以下のurlを示しています。
https://app.bitrise.io/app/[プロジェクトID]#/builds
```

- 「プロジェクトページ」->「Workflowタブ」->「Code Signing」の下にあるCODE SIGNING IDENTITYに署名ファイルをアップロードしておきます。
  ![image.png](https://qiita-image-store.s3.amazonaws.com/0/41906/a7221e19-a68f-a596-2c43-0a83b18ef27a.png)
- プロジェクトページに移動しTeamタブを開いて、ページ下部にある「Connected Apple Developer Portal Account」でApple Developer Portalに接続するアカウントを選択します。プルダウンにアカウント名を表示するためにはBitriseのアカウントページの「[App Developer Connection](https://app.bitrise.io/me/profile#/apple_developer_account)」にて認証しておく必要があります。
 - ※ アカウントの権限が少なくともAdmin権限以上であることを確認してください。
![image.png](https://cdn.buttercms.com/A1KZJmuWQiuhuMUmHPWm)

## 「iOS Auto Provision」ワークフローを導入する

事前の準備を終えているのであれば「iOS Auto Provision」の導入はとても簡単です。
既存のワークフローを編集して追加するのであれば、ワークフローの追加ボタンを押す -> 「iOS Auto Provision」を選択して追加して項目を埋める、たったこれだけで完了です。
ただし以下のことに注意してください。

- 既存のワークフローを編集して「iOS Auto Provision」を導入するときに `Certificate and profile installer`ワークフローが含まれていないことを確認してください。もし含まれていた場合にはビルドは失敗します。
- `iOS Auto Provision`はワークフローの中で依存関係を解消するステップ(例: `Run CocoaPods install`や`Carthage`)の後に設置するようにして下さい。
- `iOS Auto Provision`と`Xcode Archive & Export for iOS`のステップの間にXcode projectの設定の変更をしないようにして下さい。例えば`iOS Auto Provision`のステップの後に bundle ID を変えるというようなことです。

## ワークフローの設定値を埋める

ワークフローの追加が完了すればワークフローの設定値を環境に合わせて埋めていけば完成です。
以下に例を示します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/41906/9d53ce04-4e4a-31d7-52bd-af26433b8d4a.png)

## 完成そしてワークフローの全体図の例

例としてDiverseのとあるプロジェクトで「iOS Auto Provision」を導入しているワークフローの全体図を示します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/41906/617429ae-4a35-9da3-8c0c-1461dc8c3624.png)

簡単ですね！
それでは楽しいBitriseライフをお送りくださいませ！

明日は@starmaine777さんの [男性メイン画面のカードスワイプ部分をゴリゴリリファクタリングした話](https://qiita.com/starmaine777/items/e7d43a64169863fd2ddb) ですね。お楽しみに！