iOS
CI

TravisCIからBitriseへの移行

みなさんCIはうまく回せていますか?:smile_cat:

私はTravisCI+Fastlaneを使っていたのですが、Appleアカウントが2段階認証必須になったことで無事死亡しました:innocent::clap::clap:

一応組織アカウントであれば回避方法があるのですが、個人アカウントではどうすることもできず、Bitrise+Fastlaneに乗り換える決断をすることになりました:rocket:

この記事では移行するにあたって参考にしたページや実際の作業について書いていきます📝


TravisCI+Fastlaneでしていたこと

詳細はこちら記事にまとめてありますが、かいつまんで書くと以下のことをしていました。


Travis


  • Xcodeバージョン指定

  • cocoapodsのインストールとキャッシュ管理

  • CIが動くブランチとトリガーの指定

  • fastlaneの実行

  • 環境変数の設定


Fastlane(括弧内はaction)


  • 証明書とプロビジョニングプロファイルの取得(import_certificate, sigh)

  • アーカイブとエクスポート(gym)

  • DeployGateにアップ(deploygate)

  • Slackに成否の通知(slack)


Bitrise+Fastlaneでしていること

TravisCI+Fastlaneの時にFastlaneでしていたことの一部をBitriseでやるようになりました。


Bitrise


  • Xcodeバージョン指定

  • cocoapodsのインストールとキャッシュ管理

  • CIが動くブランチとトリガーの指定


  • 証明書とプロビジョニングプロファイルの設定(最初は両方アップロードしてましたが、sighが使えることが後でわかったので証明書だけに変わりました)

  • fastlaneの実行

  • 環境変数の設定


Fastlane(括弧内はaction)


  • プロビジョニングプロファイルの取得(sigh)

  • アーカイブとエクスポート(gym)

  • DeployGateにアップ(deploygate)

  • Slackに成否の通知(slack)


Bitriseあれこれ


始めるまで

アカウント作ったりリポジトリと連携したりという部分ですが、ここらへんはいくらでも参考記事がすでにあるので、そちらに譲ります。

若干UIが変わっていたりしますが、基本的にはガイドに従ってポチポチやれば問題ないはず。

iOS用のCIサービスBitriseを使ってみた

[iOS] Bitriseを導入する手順について


Xcodeバージョン指定

利用可能なスタック

Bitriseでは仮想マシンのバージョン(Xcodeのバージョン含む)のことをスタックと呼んでいます。スタックを指定することによって、どのXcodeバージョンでビルドさせるかを変えられます。


ステップとワークフロー

ステップ

ステップは事前に定義された入力・出力変数があるスクリプト実行のブロックをあらわします。 たくさんのステップが標準で用意されており、例えばリポジトリをgit cloneする、pod installを実行するなどのステップがあります。大抵のことは標準のステップで事足りますが、不十分な場合は自作することもできるようです。

ワークフロー

ワークフローは複数のステップの集まりです。アプリのビルド時に、ステップがワークフローで定義されたステップが実行されます。ワークフローエディタなるGUIが用意されており、そこでポチポチすることでワークフローを編集できます。テキストが好みの方はyamlでも編集することができます。

こちらの記事のようにワークフローを分割して再利用すると良い感じにできます。


CIが動くブランチとトリガーの指定

ビルドのトリガー

手動による開始、スケジュールによる開始、トリガーイベントによる開始が選べます。ブランチへのプッシュやPull Requestをトリガーにすることができます。


証明書とプロビジョニングプロファイルの設定

Bitrise上でのiOSコード署名

Bitriseではビルド時に使用する証明書とプロビジョニングプロファイルを事前にアップロードしておくことができます。テストデバイスを増やすなどでファイルが更新されるたびにアップし直さなければならないので若干面倒ではありますが、これによってTravisCI(上でのsigh実行)ではできなかった2段階認証をかわすことができます。

下記のAppleアカウントとの連携をすることでFastlaneのsighも実行できることを確認しました。というわけで、TravisCI上で使っていたFastlaneのlaneがそのままBitriseで使えました。


環境変数の設定

秘密と環境設定

他のCIよろしく環境変数を設定しておくことができます。ちょっとおもしろいのが、秘密にすべきものとその他で分かれていることです。秘密にしないものはプルリクエストによって引き起こされるビルドで公開される、と書かれているので注意が必要です。


Appleアカウントとの連携

App Store Connect 2FA solved on Bitrise

BitriseのアカウントとAppleのアカウントを連携させることができるみたいです。これによって2段階認証を通すことができるので、App Store Connectへのビルドアップロードであったり、Fastlaneのsighなども使えそうです。

ただし、連携させることのできるAppleアカウントは1つだけみたいです。複数使っている場合は都度切り替えるしかないのでしょうか・・・

Major Noob reporting for duty sir! Simple iOS setup not working

アカウント連携したはずなのにNo Apple developer account found for this build.というエラーが出るという場合は、Appのteam設定が足りてない可能性があるので確認してみましょう。


使ってみた感想

親切なUIになっていて、導かれるがままにポチポチすれば大抵のことはできてしまうので、敷居は低いかなと思いました:cherry_blossom:

ステップもほぼほぼデフォルト設定で使えるものばかりでした:feet:

Fastlaneがだいたいそのまま使えたのも良かったです:100:

気になるところとしては、若干画面描画に時間がかかることがあるかなというのと、Appleアカウントを1つしか連携できないことです:scream_cat:

アカウントに関しては、いろんな組織と一緒にアプリを作ればいろんなアカウントがあるわけで、複数登録できるようになると非常に嬉しいです:pray: