エンジニアリング

GitHubのissueを集計とか分析する際にcsvにしたり、カウントしたりとイイ感じにするためのcURLコマンド

どーも まる@へたれ です。

最近はお仕事やら、お仕事やら、お仕事が強烈でしてひたすら目の前の延焼を防壁で囲うような仕事をしてました。

燃えているプロジェクトって定量分析とか出来る状況になってないのですよ。

特に小さく始めてそこから多数の要員補強みたいになっていく構造で燃えているプロジェクトはツール導入も途中からしづらいから唯一の拠り所がgitになっていたりします。

gitでエンジニアのissueとQA(テスター)のバグチケットが入り混じってカオス・・・的なことになってたりしますよね。

ということでそんな時にいったん状況を可視化するためにissueにラベル貼り貼りをして定量カウント出来る状態にいったんしてみました。

凄いシステム化みたいなことをせず、とにかく一旦可視化みたいな時に使ってもらうには良いと思います。シンプルにいきます。

可視化する2ステップ

1.ラベル貼り貼り

まずは、issueのラベル貼りをしましょう、これは人力です。

僕が良くやるのは画面があるシステムの場合は、画面名のタグを作成してissueと紐付けます。

もう1つは、テスト工程のラベルのラベル付けです。ウォーターフォールで行っているのであれば、いったん発見工程ごとのラベルを作成して既存チケットをペタペタやってきます。

これが出来ないくらい、大量なチケットがあったら、諦めましょう。家に帰ります・・・。

僕は300くらいなら、頑張れる気がします。

そして、そのルールをメンバに周知します、そうじゃないと定期的にこの作業を自分でやることになって自分の存在意義が分からなくなります。

2.cURLで引っ張ってきて定期的にモニタリング

さて、振り分けが出来たので可視化してみましょう。

まずはgoogleスプレッドシートやexcelで定量分析出来るようにcsvでダウンロード出来る状態にしましょう。

GitHubはissueをとってくるAPIが提供されているのでそれを利用してjqでcsv化するようなやり方で実施しようと思います。

#curlが入ってなかったらインストール
brew install curl

#jqが入ってなかったらインストール
brew install jq

#nkfが入ってなかったらインストール
brew install nkf

GithubのAPIを叩くためにアクセストークンを取得しましょう。

Settings > Developer settings > Personal access tokens

必要なアクセス権をチェックします。

これでアクセストークンが生成されました

これで準備が整いました

issueの一覧をCSV形式でダウンロード

curl -H “Authorization: token XXXXXXXXXXXXXXXXXX”  https://github.com/repos/USER※1/REPOS※2/issues\?state=all\&per_page\=1000\&page\=1\&labels=LABEL_NAME※3 |\ jq -r ‘[“id”,“title”,“state”,“labels1”,“labels2",“body”,“url”,“created_at”], (.[] | [.id,.title,.state,.labels[0].name,.labels.name,.body,.html_url, .created_at ]) | @csv’ > ~/Test_$(date +%Y%m%d).csv && nkf --overwrite --oc=UTF-8-BOM ~/Test_$(date +%Y%m%d).csv

Authori〜のところで発行したパーソナルアクセストークンをいれます。

※1※2は該当のレポジトリの情報をいれます。

※3に関しては一括で落としてきたいラベル名を指定します。このラベルですが、日本語名の場合はURLエンコードが必要です(自分のshell芸では書けなかった・・・のでURLエンコード出来るWebサイトで変換した文字列を連結してました)

jqが記載されている行でjsonリクエストを整形してCSVに出力します。

最後にnkfの部分についてはそのままダウンロードをしてexcelで開くとBOMの関係でexcelが文字化けをしてしますのでその対策で実行してます。

最終的にはこんな感じでexcelで開けるようになります。分析が捗りそう!

件数を計測する場合

curl -H “Authorization: token XXXXXXXXXXXXXXXXXX” https://github.com/repos/USER※1/REPOS※2/issues\?state=all\&per_page\=1000\&page\=1\&labels=LABEL_NAME| jq -r ‘. | length’ >>count.txt

上記をラベルごとに作っておいて、一気に実行します。

そうすると >> になっているので実行毎に同じテキストに各ラベルごとに件数をテキストが追加される形で出力されます。こんな感じ。

これとあらかじめ対応する画面一覧を作成して貼っ付けると・・・

こんな感じで集計が取れるのでここからグラフなどで可視化できますね!

最後に・・・・・

平和に毎日過ごせる働き方をしたいですね・・・。切実に・・・・・。