公開日

GitHub公式の issue-metrics Action で開発生産性を振り返る

(image)GitHub公式の issue-metrics Action で開発生産性を振り返る

GitHub公式が出している issue-metrics Actionをご紹介。

開発生産性を計測するにはGitHub Insightは貧弱すぎる

GitHubのデータで開発生産性を計測したい。いわゆるFour Keys メトリクスを計測したい。

しかし、開発生産性を計測するにはGithub Insightの機能はあまりにも貧弱だ。

そんな折にGithubから開発メトリクスを計測する公式Actionが出ていたので試してみた。

github/issue-metrics: Gather metrics on issues/prs/discussions such as time to first response, count of issues opened, closed, etc.

説明

リポジトリ名にIssueと付いているので、Issueに関するメトリクスを計測するものかと勘違いしてしまいそうになるが、Pull Requestに関するメトリクスも計測することができる。

具体的には下記の項目を出すことができる。

  • Time to first response: PRが最初にレビューされるまでの時間
  • Time to close: PRがマージ/クローズされるまでの時間
  • Number of items closed: どれだけPRをマージ/クローズできたか
  • PR一覧

使い方

公式のREADMEに掲載されたUsageの設定だと前月データ決め打ちになっているので、Year-Month を指定してworkflow_dispatchイベントで実行できるように改修したものが下記:

repo:your-org/repo-name の部分は計測したいリポジトリ名に置き換えること。

# .github/workflows/monthly-metrics.yml
name: Monthly Pull Request metrics

on:
  workflow_dispatch:
    inputs:
      year:
        description: "Enter the year (e.g. 2023) for which you want to collect metrics"
        required: true
        type: number
      month:
        description: "Enter the month (1-12) for which you want to collect metrics"
        required: true
        type: number

permissions:
  issues: write
  pull-requests: read

jobs:
  build:
    name: pull request metrics
    runs-on: ubuntu-latest

    steps:
      - name: Get dates for specified year and month
        shell: bash
        run: |
          # Get the specified year and month from the inputs
          year=$
          month=$

          # Calculate the first day of the specified month and year
          first_day=$(date -d "$year-$month-01" +%Y-%m-%d)

          # Calculate the last day of the specified month and year
          last_day=$(date -d "$first_day +1 month -1 day" +%Y-%m-%d)

          # Set an environment variable with the date range
          echo "$first_day..$last_day"
          echo "selected_month=$first_day..$last_day" >> "$GITHUB_ENV"
      - name: Run issue-metrics tool
        uses: github/issue-metrics@v3
        env:
          GH_TOKEN: $
          SEARCH_QUERY: "repo:your-org/repo-name is:pr created:$"
      - name: Create issue
        uses: peter-evans/create-issue-from-file@v5
        with:
          title: "Monthly pull request metrics report ($)"
          token: $
          content-filepath: ./issue_metrics.md

実行イメージ

下記のようにActionsページからポチポチで対象年&月を指定して実行でする。

Trigger Action by workflow_dispatch

サンプル

作られたメトリクス結果のサンプルは下記:

Monthly pull request metrics report (2024-08-01..2024-08-31) · Issue #2333 · toshimaru/RailsTwitterClone

最後に

Github Pull Request の簡易的なメトリクスを振り返るのに issue-metrics は便利。

一方で、GitHub公式の機能として Four Keys っぽいものをリアルタイムで確認できるような機能が欲しいぞ。GitHub殿、よろしく頼む。