はじめに
自分が最近触り始めたプロダクトで謎の設定によりビルドが成功してたのが、自分が触り始めて失敗するようになったので原因を調査した時のメモになります。
先に結論
気が早い人向けに事象と解決策を先に記載します。
- 事象:Bitrise上で
carthage update/bootstrap --platform ios
を実行するとQuickのビルドで失敗する - 解決策1:--platform iosを外す(苦肉の回避策)
- 解決策2:Quickはcarthageからpodsに切り替える
Carthageを使用したQuickの導入方法
導入方法については公式のGitHub上にて説明がある通りですが、ここで軽く説明しておきます。
- Cartfile.privateにQuickを追加する(github "Quick/Quick"、github "Quick/Nimble")
- carthage updateを実施する
- 対象のtest targetの Link Binary With Libraries に Quick.framework と Nimble.framework を追加する
内容を読む限りは簡単なステップで導入できそうです。
実際におきた問題
問題1:API rate limit exceeded
Bitrise上でAPI rate limit exceeded
のエラーが起きたのがスタートで、調査を開始しました。
これはGithub APIの利用制限に引っかかっただけなので、GITHUB_ACCESS_TOKENを設定すれば良さそうです。
参考:https://qiita.com/watanave/items/c12859b2cb57dc599288
しかしこの調査のとき、プロダクトの方で何故かcarthageの実行を二回行なっていることに気づきました。
一回目がBitriseのworkflowでのcarthage実行、二回目がfastlane内でのcarthage実行になります。
これはおそらく無駄なので、一回目のworkflowでのcarthage実行を削除することにしました。
問題2:何故かQuickのビルドで失敗する
二回行なっていたcarthageのうち一つを削除すると、carthageに失敗するようになりました。
調べてみたところこんなissueを見つけました。
https://github.com/Quick/Nimble/issues/702
なんと、Nimbleでは carthage update/bootstrap --platform ios
のようにplatformを指定すると失敗するようです。
どうやら削除した一回目のworkflowでのcarthageはplatform指定がなく、二回目の方はplatform指定がある模様。
おそらく一回目で成功して、二回目はキャッシュで成功していたのでしょう。
このissueが解決されない限りはplatform指定はできないですね。
ということで、今回はplatform指定を外すか、CocoaPodsに戻すようにしようと思います。