皆さま、CIサービスは何をお使いでしょうか?
私は現在、業務のメインプロダクトではBitriseを使っています。
Bitriseは価格やXcode Betaへの対応の早さなど、多くの良い点がありますが、一番気に入っているのはScheduled Buildです。
Scheduled Buildを使うと、重い処理をGitHubへのPush時からは切り離し、深夜に定期実行することができるため、日中はCIのキューが詰まりづらくなります。
CIのキューが詰まる問題
CIのキューが詰まる問題の要因の一つが、時間のかかる処理が頻繁に実行されることにあります。
iOSアプリ開発の場合、アプリの配布処理がボトルネックになりがちです。
私の場合、developブランチにmergeされるたびに、以下の3つの処理が走っていたのがキューが詰まる原因でした。
- Debug Build + Unit Test
- Release Build(Development環境)+ Fabric Betaへの配布
- Release Build(Production環境)+ Fabric Betaへの配布
上記の処理で、33分程度かかっていました。
Pull Requestが一つmergeされるたびに33分もかかれば、キューも詰まっちゃいますよね。
(上記の画像は、深夜の定期実行に移した後のものです)
アプリの配布処理を深夜に行う
テスト向けの社内配布であれば、配布するアプリは前日までの変更が反映されていれば事足りる場合がほとんどです。
そのため、配布処理を平日深夜2時に1度だけ行うようにし、Push時はUnit Testのみを行うようにしました。
BitriseのScheduled BuildはBuild一覧から簡単に設定することができます。
また、Bitriseは手動で任意のブランチをビルドすることもできるため、テストで最新の状態のアプリが必要になった場合にも対応できます。
結果
Push時には8分程度で済むようになり、キューが詰まらなくなっため、日中の開発がストレスなく進むようになりました。
まとめ
BitriseのScheduled Buildを使うと、アプリの配布処理のような重い処理を深夜の定期実行に移すことができるため、日中のキューが詰まりづらくなります。