🐷

Github Actionでお手軽にPRのリードタイムを計測する

2023/07/30に公開

導入

「Four Keys」などここ数年で開発生産性の計測への注目が高まっています。
https://cloud.google.com/blog/ja/products/gcp/using-the-four-keys-to-measure-your-devops-performance

ちょうど最近、Gihub公式によるメトリクス計測のためのActionが公開されたようです。

仕組み

言及されているレポジトリのコードを見ると、内部的にはPythonのgithub3というGithub APIを扱うライブラリを使用して、基本的なメトリクスの計算ロジックを実装し、関数として呼び出せるようにしてくれているようです。
https://github.com/github/issue-metrics/blob/522cb52272d2f9e3da6327781c2d00ac47bb38bd/time_to_close.py#L27

使用場面

https://github.com/github/issue-metrics/blob/main/README.md?#L66
READMEの例を見ると、cronで定期実行し、一定の期間内のデータを計算する用途で作られているように感じます。

できること

記事やREADMEにも書かれていますが、一応まとめておきます。

  • Time to first response: IssueやPRが作成されてから最初の応答までの時間
  • Time to close: IssueやPRが作成されてからクローズまでの時間
  • Time to answer: ディスカッションが作成されてから回答されるまでの時間
  • Time in Label: ラベルが付与されてから削除されるまでの時間

データの出力はMarkdownで、期間内の平均時間と各IssueやPRのメトリクスをテーブルに列挙してくれるようです。

# Issue Metrics

| Metric | Value |
| --- | ---: |
| Average time to first response | 0:50:44.666667 |
| Average time to close | 6 days, 7:08:52 |
| Average time to answer | 1 day |
| Number of items that remain open | 2 |
| Number of items closed | 1 |
| Total number of items created | 3 |

| Title | URL | Time to first response | Time to close | Time to answer |
| --- | --- | --- | --- | --- |
| Discussion Title 1 | https://github.com/user/repo/discussions/1 | 0:00:41 | 6 days, 7:08:52 | 1 day |
| Pull Request Title 2 | https://github.com/user/repo/pulls/2 | 0:05:26 | None | None |
| Issue Title 3 | https://github.com/user/repo/issues/3 | 2:26:07 | None | None |

https://github.com/github/issue-metrics#example-issue_metricsmd-output

感想

少人数の会社など、導入したい気持ちはあったが、計測の仕組みを作ることまではできていなかった場合などにとても役立つActionだと感じました。

Discussion