Closed24

github/issue-metrics アクション触ってみる

Futa HirakobaFuta Hirakoba
Futa HirakobaFuta Hirakoba

Data-driven insights

  • Issue Metrics GitHub Action をリリースするぜ
  • これは、開発者やチームが主要なメトリクスを測定し、プロジェクトに関する貴重な洞察を得るための強力なツールだぜ
  • Issue、PR、ディスカッションに関連する重要なメトリクスを任意の期間で簡単に追跡・監視できるようになるぜ
    • メトリクス例:初回レスポンスまでの時間やクローズまでの時間など
  • 個人でも小規模チームでも大規模組織でも、プロジェクト全体の健全性・進捗・エンゲージメント測るのに役立つよ
Futa HirakobaFuta Hirakoba

Common use cases

  • メンテナー: 適切に注意を払える
    • メンテナは issue や PR に注意を払うことは不可欠
    • メトリクスを使うと、プロジェクトの作業量を明確に把握できる
    • チームがどのように時間と注意を効果的に優先させるかを検討できる
    • 注意が必要な見過ごされているリクエストを強調できる
  • ファーストレスポンダー: タイムリーなユーザとコンタクトできる
    • ファーストレスポンダーはユーザが適切な時間内に連絡を受けられるようにすることが仕事の一部
    • アクションを使えば、返信待ちのディスカッションや未解決 issue、レビュー待ちプルリクの数などを追跡できる
    • メトリクス活用で、ハイレベルなレスポンスを維持し、ポジティブなユーザ体験とタイムリーな問題解決を促進できる
  • OSPO (Open Source Program Office): オープンソースリクエストの合理化
    • OSPO は会社のポリシーを遵守しながらオープンソースのリリースプロセスを簡単かつ効率的にするのが仕事
    • アクションを使えば、リクエストの数やオープンリクエストとクローズドリクエストの比率、オープンソースのプロセスを完了させるまでにかかる時間に関するメトリクスを得られる
    • メトリクスにより、ワークフローの合理化、応答時間の最適化などを実現でき、オープンソースリリースプロセスを最適化できる
  • 製品開発チーム: プルリクエストレビューの最適化
    • 製品開発チームはコードレビュープロセスに大きく依存している
    • アクション活用で、プルリクエストのレビューにかかる時間などのメトリクスを得られる
    • メトリクスにより、レトロスペクティブでデータを振り返り、改善点を特定し、レビュープロセスを最適化できる
    • それにより開発サイクルを加速できる
Futa HirakobaFuta Hirakoba

Setup and workflow integration

  • Issue Metrics GitHub Action のセットアップは簡単
  • 定期実行が前提
  • 既存のワークフローに統合してもいいし、メトリクス追跡専用のワークフローを作成してもいい
  • カスタマイズ可能なオプションが豊富
    • GitHub の強力な検索フィルタリングが活用できる
    • すぐに使える設定もあるし、GitHub 内部で活用されてるよ
name: Monthly issue metrics
on:
  workflow_dispatch:
  schedule:
    - cron: '3 2 1 * *'

jobs:
  build:
    name: issue metrics
    runs-on: ubuntu-latest

    steps:

    - name: Get dates for last month
      shell: bash
      run: |
        # Get the current date
        current_date=$(date +'%Y-%m-%d')

        # Calculate the previous month
        previous_date=$(date -d "$current_date -1 month" +'%Y-%m-%d')

        # Extract the year and month from the previous date
        previous_year=$(date -d "$previous_date" +'%Y')
        previous_month=$(date -d "$previous_date" +'%m')

        # Calculate the first day of the previous month
        first_day=$(date -d "$previous_year-$previous_month-01" +'%Y-%m-%d')

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

        echo "$first_day..$last_day"
        echo "last_month=$first_day..$last_day" >> "$GITHUB_ENV"

    - name: Run issue-metrics tool
      uses: github/issue-metrics@v2
      env:
        GH_TOKEN: ${{ secrets.GH_TOKEN }}
        SEARCH_QUERY: 'repo:owner/repo is:issue created:${{ env.last_month }} -reason:"not planned"'

    - name: Create issue
      uses: peter-evans/create-issue-from-file@v4
      with:
        title: Monthly issue metrics report
        content-filepath: ./issue_metrics.md
        assignees: <YOUR_GITHUB_HANDLE_HERE>
Futa HirakobaFuta Hirakoba

Issue Metrics Action の README を読む

  • このアクションは GitHub OSPO が自分たちで使うために開発した
Futa HirakobaFuta Hirakoba

得られるメトリクス

Metric Description
Time to first response issue/PR/discussion が作成されてから、最初のコメントやレビューが行われるまでの時間。
Time to close issue/PR/discussion が作成されてからクローズされるまでの時間。
Time to answer (discussion のみ)discussion が作成されてから回答されるまでの時間。
Time in label ラベルが issue/PR/discussion に特定のラベルを適用してから削除されるまでの時間。これにはLABELS_TO_MEASURE環境変数が設定されている必要。
Futa HirakobaFuta Hirakoba

実際に Action を使ってみる on korosuke613/zenn-articles

ref: https://github.com/github/issue-metrics#use-as-a-github-action

Futa HirakobaFuta Hirakoba

よく動かしてるのは korosuke613/zenn-articles なのでまずはここでやってみる

Futa HirakobaFuta Hirakoba

サンプルワークフローがいくつかある

  • Calculated Time Example
    • 先月作成された issue を検索し、メトリクスを含む issue を生成
  • Fixed Time Example
    • 2023-05-01 から 2023-05-31 の間に作成された issue を検索し、メトリクスを含む issue を生成

2 個しかなかった。
どちらも issue に関するものとなっているが、PR はどうやるのか。

Calculated Time Example
    - name: Run issue-metrics tool
      uses: github/issue-metrics@v2
      env:
        GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        SEARCH_QUERY: 'repo:owner/repo is:issue created:${{ env.last_month }} -reason:"not planned"'

SEARCH_QUERYis:issue とある。ここら辺を調整すれば良さそう。

実際 README に書いてある。

Edit the values (SEARCH_QUERY, assignees) from the sample workflow with your information.

Futa HirakobaFuta Hirakoba

テキストだとこれ。なんか色々出てるぞ!


Issue Metrics

Metric Value
Average time to first response 4 days, 21:18:58.666667
Average time to close 3 days, 11:44:57.578947
Average time to answer None
Number of items that remain open 0
Number of items closed 19
Total number of items created 19
Title URL Time to first response Time to close Time to answer
feat: animationize my icon in rotate-my-icon when slidev dev https://github.com/korosuke613/zenn-articles/pull/381 None 1:41:23 None
feat: Productivity Weekly(2023/06/28) https://github.com/korosuke613/zenn-articles/pull/380 5 days, 9:40:11 15 days, 2:07:35 None
feat: Productivity Weekly(2023/06/14) by defaultcf https://github.com/korosuke613/zenn-articles/pull/379 15:17:30 15:17:46 None
chore(deps): update npm https://github.com/korosuke613/zenn-articles/pull/378 None 6:24:28 None
chore(deps): update dependency node to v18.16.1 https://github.com/korosuke613/zenn-articles/pull/377 None 2:09:33 None
feat: add rotate-my-icon slide https://github.com/korosuke613/zenn-articles/pull/376 None 9 days, 2:36:22 None
feat: Productivity Weekly(2023/06/14) https://github.com/korosuke613/zenn-articles/pull/375 13 days, 17:19:25 15 days, 0:55:04 None
chore: update metadata articles/productivity-weekly-20230607.md by zenn-metadata-updater https://github.com/korosuke613/zenn-articles/pull/374 None 0:00:45 None
feat: Productivity Weekly(2023/06/07) by defaultcf https://github.com/korosuke613/zenn-articles/pull/373 1 day, 18:36:15 5 days, 18:10:59 None
chore(deps): update dependency node to v18.16.0 https://github.com/korosuke613/zenn-articles/pull/372 None 0:01:59 None
chore: enable automerge for asdf update https://github.com/korosuke613/zenn-articles/pull/371 None 0:09:22 None
chore(deps): update npm https://github.com/korosuke613/zenn-articles/pull/370 7 days, 18:31:34 7 days, 18:36:45 None
fix: VSCode の Jest 拡張機能が asdf で管理している Node.js を呼び出せない問題 https://github.com/korosuke613/zenn-articles/pull/369 None 0:01:01 None
chore: update metadata articles/vscode-jest-extension-with-asdf.md by zenn-metadata-updater https://github.com/korosuke613/zenn-articles/pull/368 None 0:04:03 None
feat: VSCode の Jest 拡張機能が asdf で管理している Node.js を呼び出せない問題 https://github.com/korosuke613/zenn-articles/pull/367 None 1 day, 0:36:20 None
feat: Productivity Weekly(2023/06/07) https://github.com/korosuke613/zenn-articles/pull/366 None 11 days, 6:02:58 None
chore: update metadata articles/productivity-weekly-20230531.md by zenn-metadata-updater https://github.com/korosuke613/zenn-articles/pull/365 None 0:01:38 None
feat: Productivity Weekly(2023/05/31, 2023/05/24) by defaultcf https://github.com/korosuke613/zenn-articles/pull/364 0:28:57 0:29:01 None
chore(deps): update npm https://github.com/korosuke613/zenn-articles/pull/363 None 3:47:12 None
Futa HirakobaFuta Hirakoba

実際に Action を使ってみる on korosuke613/homepage-2nd

korosuke613/homepage-2nd も活発なので、こっちでも試したい。

Futa HirakobaFuta Hirakoba

Renovate の PR が多い。
Renovate がコメントするせいか、Time to first response の値がめちゃ短い。
除外したほうがいいかも??でも Time to close は計算したい気もする。

Futa HirakobaFuta Hirakoba

再実行したら新しい Issue が生まれた。
利用方法によって違うやろうけど、俺的には Issue たくさん作ってほしくない。

Futa HirakobaFuta Hirakoba

感想

Futa HirakobaFuta Hirakoba
  • いろんなデータが出ておもしろい
  • どう活用するかはむずそう
    • 個人だと特に
  • あくまで生成するのは Markdown なので、Issue を作らずに step summary に出すのもアリ
  • でか OSS やプロダクトの場合は結構良さそう
このスクラップは2023/07/31にクローズされました