[github actions] 秒で使えるCIパフォーマンスモニタリング用actionを作った
この記事はMakuake Advent Calendar 2022とGitHub Actions Advent Calendar 2022の1日目の記事です。(遅刻)
CIにどれくらいの時間がかかるのかサクッと知りたいなと思い、サクッとactionを作ったので、サクッと紹介です。
3行まとめ
- github actionsのパフォーマンス(実行時間)がどのくらいかわかるアクションを作った
- いつも使っているgithubのworkflowに入れるだけ
- 実行にかかった時間を
成功
/失敗
のステータス x中央値
平均値
最大値
最小値
の計8パターンで取れる
👇コチラから使ってみてください!
もうちょっと具体的に
実行時間を計測したいワークフローの中でこのworkflow-time-predictor
を使うと、これまでのワークフローの実行結果を元に、完了するのにかかる時間を教えてくれます。
概要
https://docs.github.com/en/rest/actions/workflow-runs#list-workflow-runs-for-a-workflow から得られるワークフローの実行結果を元にしています。
使い方
使い方としては下記のようにCIのいずれかのタイミング(実行開始時とかが良さそう)で使っていただくのが良いと思います
- name: Predict run time
id: predict_run_time
uses: jerome-1010/workflow-time-predictor@main
with:
token: ${{ secrets.GITHUB_TOKEN }}
owner: ${{ github.repository_owner }}
repository: ${{ github.repository }}
workflow-file-name: "build.yml"
ワークフローの実行結果を取得するのにワークフローのファイル名が拡張子付きで必要なのがちょっと微妙だと思っていて、本当であればrun idから引っ張ってきたかったのですが走り終わっていないワークフローの情報は取れないようでこの形にしました。
また、デフォルトでは直近50回分の実行を元にして計算しています。
出力結果はactionのoutputに吐いているので、例えば${{steps.predict_run_time.outputs.succeed_median_time}}
といったような形で取り出しSlackなどに流すことも可能です。
また、👇のような形で結果全体をログに吐くようにもしているため、ワークフローの実行結果画面で確認することも可能です。
---------- Result ----------
succeed_median_time: 0.23 min
succeed_average_time: 18.91 min
succeed_max_time: 461.60 min
succeed_min_time: 0.00 min
failure_median_time: 0.22 min
failure_average_time: 7.35 min
failure_max_time: 180.32 min
failure_min_time: 0.00 min
----------------------------
おわりに
今回参加したアドベントカレンダーですが、実は昨年も同じアドベントカレンダーに同時参加していました。二年連続で同時に参加できて嬉しいです(github actionsには記事を書かせる魔力がある)
昨年の記事はコチラ👇
それはさておきまだまだアドベントカレンダーは続くので、引き続き他の記事も楽しみにしていただけると嬉しいです!
Discussion