みなさんCIはうまく回せていますか?
私はTravisCI+Fastlaneを使っていたのですが、Appleアカウントが2段階認証必須になったことで無事死亡しました
一応組織アカウントであれば回避方法があるのですが、個人アカウントではどうすることもできず、Bitrise+Fastlaneに乗り換える決断をすることになりました
この記事では移行するにあたって参考にしたページや実際の作業について書いていきます📝
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になっていて、導かれるがままにポチポチすれば大抵のことはできてしまうので、敷居は低いかなと思いました
ステップもほぼほぼデフォルト設定で使えるものばかりでした
Fastlaneがだいたいそのまま使えたのも良かったです
気になるところとしては、若干画面描画に時間がかかることがあるかなというのと、Appleアカウントを1つしか連携できないことです
アカウントに関しては、いろんな組織と一緒にアプリを作ればいろんなアカウントがあるわけで、複数登録できるようになると非常に嬉しいです