開発人数が多く、規模の大きいプロダクトでは最終的な成果物をビルドするだけで1時間以上かかってしまうことも珍しくありません。ですが最初からそれほど時間がかかっていたわけではなく、時間とともに巨大化するコードベース、追加されたステップなどによりいつの間にかどこかの処理がボトルネックとなっていることが多いでしょう。
CIサービスの多くは成功/失敗の情報、全体としてのビルド時間の情報は見やすく提供していますが、各ステップの時間やステップのエラー率などの細かい粒度の情報を時系列で確認する機能までは提供されていないことが多いです。そのため、ボトルネック箇所を特定するためには過去の生ビルドログを自分の目で確認するコストが高い作業が必要でした。
そこで、Jenkins, CircleCI, Github Actions, BitiseのビルドデータをAPI経由で取得してBigQueryに蓄積するCIAnalyzerというツールを開発しました。さらにDataPortalでダッシュボードを作成してデータを可視化したことで、例えば以下のような問題の解決に役立ちました。
- 半年、1年前と比較してボトルネックとなっているステップの発見
- 不規則に発生する厄介なビルドエラーがいつから起きているのかの特定
これ以外にも実際の業務で問題の解決に役立った事例をいくつか紹介しながら、CI/CDのデータを長期に蓄積して分析することの重要性をお伝えしたいと思います。
参考:
https://github.com/Kesin11/CIAnalyzer