xxxx35xxxx / github-gas-four-keys

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

github-gas-four-keys

概要

GoogleSpreadsheetでGitHubレポジトリのFourKeysの計測/可視化を行うツールです. 以下の特徴があります.

  • PullRequestのソースブランチ名を利用してFourKeys計測を行うため、導入が容易
  • GASを用いて自動化されるため、インフラコストが不要

出力例

インストレーション

GitHubアクセストークンの準備

https://github.com/settings/tokens/new からrepoにチェックを入れアクセストークンを発行します(トークンは後ほど使います).

GAS APIの有効化

https://script.google.com/home/usersettings からGoogle Apps Script APIをオンにします.

ClaspによるSpreadsheetとGASの作成

  1. 以下のシェルを実行. GoogleDrive上に Github-gas-four-keys というスプレッドシートが作成されます.
npm install @google/clasp -g

git clone https://github.com/cosoji-jp/github-gas-four-keys.git
cd github-gas-four-keys
npm init -y

# ブラウザでGoogleアカウントのログインが求められます.
clasp login
# ログインしたアカウントのGoogleDriveのマイドライブのルートにSpreadsheetが作成されます.
clasp create --type sheets
clasp push
  1. GoogleDrive上に Github-gas-four-keys という名前のスプレッドシートが作られます.
  2. 作成されたスプレッドシートのApps Script プロジェクトを開きます.
  3. 以下のScriptPropertyを設定します.
プロパティ
GITHUB_API_TOKEN GitHubアクセストークンの準備で作成したトークン. 例) ghp_ から始まる文字列
GITHUB_REPO_NAMES レポジトリ名のJSON配列. 例) ["github-gas-four-keys"]
GITHUB_REPO_OWNER レポジトリのOwnerあるいはOrganization名. 例) cosoji-jp
  1. Apps Script プロジェクトから、 initialize 関数を実行し、スプレッドシートを初期化します.
  2. Apps Script プロジェクトから、 getAllRepos 関数を実行し、GithubからPR情報を取得します.
  3. スプレッドシートの"FourKeys計測結果"シートにFourKeys分析結果が出力されます.

自動計測設定

上記手順で initialize 関数を実行すると毎週日曜日00:00~01:00で自動的にPRが取得されるトリガーが設定されます。カスタマイズし任意の時間帯や間隔で実施することもできます.

各FourKeys項目の計測手法

デプロイ頻度

GitHub上のPullRequestのマージ頻度を計測しています. 1日あたりの平均マージ回数によって、Elite/High/Medium/Lowの分類が行われます.

デフォルトでは1週間に3回以上(1日あたり0.4285714286回以上)の場合にEliteと判定されます. この値はスプレッドシート上の分析設定シートE5セルで設定することができます.

変更リードタイム

PullRequestのソースブランチ(作業ブランチ)上で行われた初回コミットから、そのPullRequestがマージされるまでの時間を計測しています. マージされるまでの平均時間によって、Elite/High/Medium/Lowの分類が行われます.

デフォルトでは平均24時間(1日)以内の場合にEliteと判定されます. この値はスプレッドシート上の分析設定シートE8セルで設定することができます.

変更障害率

各PullRequestのソースブランチのうち、障害対応を行ったブランチ(デフォルトではブランチ名にhotfixが付くブランチ)または巻き戻しを行ったブランチ(デフォルトではブランチ名にrevertが付くブランチ)の割合を計測しています.

この割合によって、Elite/High/Medium/Lowの分類が行われます. デフォルトでは割合が15%以下の場合Eliteと判定されます. この値はスプレッドシート上の分析設定シートE11セルで設定することができます.

障害対応を行ったブランチ名の判定ルールは、スプレッドシート上の分析設定シートE3セルで設定することができます.

平均修復時間

障害対応を行ったPullRequestのソースブランチ(デフォルトではブランチ名にhotfixが付くブランチ)の初回コミットから、そのPullRequestがマージされるまでの時間を計測しています. マージされるまでの平均時間によって、Elite/High/Medium/Lowの分類が行われます.

デフォルトでは平均24時間(1日)以内の場合にEliteと判定されます. この値はスプレッドシート上の分析設定シートE14セルで設定することができます.

その他のカスタマイズ

計測範囲

FourKeys計測結果シートの計測は移動平均に基づいて計測されます. 移動平均のウィンドウ幅(日単位)は分析設定シートE2セルで設定することができます. デフォルトでは28日(4週間)に設定されています.

計測対象ユーザの設定

分析設定シートのA列にPullRequestを作成したユーザ名が表示されます. 各ユーザの隣のセル(B列)にFALSEを入力するとそのユーザのPullRequestを計測対象から除外することができます. FALSE以外の値が入力されている、もしくはブランクの場合、計測対象になります.

About

License:MIT License


Languages

Language:JavaScript 100.0%