Written by
izumiiii
on
on
遅かったCircleCIを改善する時に見たところ
私が前職で所属してた会社ではバックエンドに Rails を使用してるプロジェクトだったのですが、PR を作成毎に起動する CircleCI がとても遅い問題を抱えておりました。 大体 1h~2h これでは、通常の開発どころか緊急対応の際にも大きく影響してしまいます。 それで、これをどうにか出来ないかと思い直した時の備忘録です。
パフォーマンス調査
CI のテスト部分のパフォーマンス解析にはtest-profを使用。 これを使うことによって spec 内で無駄にレコードが生成されていないかを確認する。 その他にも、便利メソッドが使えたり、aggregate_failures に関する調査をすることができる。
ちなみに実際にパフォーマンス調査をして数百レコード単位で無駄なレコードが生成されていることがわかった。
CircleCI の parallelism 化
config.yml 内に parallelism の項目を指定することでテスト並列実行することができる。 言語に依存しないのが良いところ。 自分の場合はさらにタイミングデータを用いて並列の最適化を行いました。
ビルドイメージの最適化
最後は細かい部分になるが、CI で使うビルドイメージを CircleCI 側で提供されているものに変更する。こちらはベストプラクティスとしても紹介されている。