
1月末に行った福岡で食べた美味しいものがまた食べたいiOSチームのかっくん(@fromkk)です。
CIにおけるiOSの証明書に苦しめられた方はどのくらいいますでしょうか?
そもそもiOSの証明書の仕組み自体が複雑で理解が難しいのにCI上で正しく動作させるのも至難の技ですよね。
ここでは2/7にGA Technologies社で開催された「クラウドモバイルビルド/テスト Meetup」というイベントで「iOS Auto Provisionで証明書更新の苦悩からの解放」というタイトルで登壇してきたものを文字にしてお伝えしますのでBitriseのiOS Auto Provision Step便利さが伝わればと思います。
iOSアプリにおける証明書の管理に関する問題がいくつかあります。
- 基本的には開発用、リリース用など複数の証明書が必要
 - 更に、アプリにExtension(拡張機能)毎にも証明書が必要
 
ということで必要な証明書の数は、アプリ本体に加えて、Extensionの数を環境の種類の数でかけたものになります。
登録端末を増やすなどして変更する度にDevelopmentやAd-hocの証明書を更新する必要があるということです。
これってとても大変では?😵
この大変さを解決するための案としてパッと思いつくのは2あります。
- fastlane match
 - Bitrise iOS Auto Provision Step
 
ですね。ただ、fastlane matchは証明書の管理を解決してくれる優れた機能ではありますが、証明書をアップロードするために新たにGitHubにリポジトリを作成する必要があります。
これは作業者の権限によっては難しい場合もあるので多少面倒かもしれないです。
Bitrise iOS Auto Provision StepはBitrise上でApple Developer Accountにログインしておけば利用できるので個人的にはこちらの方が手軽に利用できるなと感じたのでこちらを利用しています。
前提準備としてAccount settingsからApple Developer Accoutにログインにログインします。

まだの人はConnectからApple IDとパスワードを入力して、2FAのコード入力をしてログイン完了です。


続いてアプリのTeamタブからConnected Apple Developer Portal Accountを先ほど設定したアカウントを選択して保存します。念のためにTest the apple developer portal connection of XXXをクリックしてみて接続確認を実行しておきましょう。エラーが起きなければ成功です。

既に登録してあるProvisioning Profileファイルがあれば全て削除しておきます。

続いてWorkflow EditorでXcode Archive & Export for iOSステップの手前で新たにステップを追加し、iOS Auto Provisionを検索してクリックします。

必要な設定をしておきます。

これでビルドを実行してみてビルドができれば成功です🎉
失敗した場合は頑張って解消しましょう😓
YouTubeにも動画を上げたので良ければそちらもご覧ください。
Bitrise iOS Auto Provision Stepの仕組み
こちらがどういう仕組みになってるかというと、アプリをビルドする際に保存しているログイン情報に対して必要な分の証明書を作成し、それらをダウンロードして使うようにしているみたいです。
命名規則が整っていれば確かに可能そうですね。
注意点
xcodebuild コマンドでExportOptions.plistを明示的に指定するとBitrise iOS Auto Provision Stepが生成したものとずれてしまい失敗することがあります。
明示的な指定を止める必要があるので注意しましょう。
まとめ
CI上での証明書の管理から解放されて、余った時間をアプリの更なる改善に割くことができるようになります。
また、証明書管理の属人性を排除できるので、開発する人が入れ替わっても問題が起こることは少ないかと思います。
可能なところからなるべく自動化して快適な開発作業に注力していきましょう💪🏻
積極採用中!!
子育て家族アプリFammを運営するTimers inc.では、現在エンジニアを積極採用中!
急成長中のサービスの技術の話を少しでも聞いてみたい方、スタートアップで働きたい方など、是非お気軽にご連絡ください!
採用HP: http://timers-inc.com/engineerings