ツナワタリマイライフ

日常ネタから技術ネタ、音楽ネタまで何でも書きます。

GitHub の Repository の Pull Request の数を Datadog に送る OSS 作った

作った。

github.com

そういえば今日は July Tech Festa で、@songmu さんの OSS を細く長く続ける技術を聞いて、OSS 活動するぞ〜〜〜〜〜となって作った。

junkyard.song.mu

自分も Datadog に関する発表をして、custom metrics はいいぞという話をしたというのもあり、やるぞ〜〜〜〜となって作った。

これはなに

特定の Repository の Pull Request の数を Datadog に送る君です。

custom metrics の label には repository, author, label, reviewer がついてます。

f:id:take_she12:20210125035101p:plain

対象の Repository は環境変数で指定しています。

$ cat .envrc
export DATADOG_API_KEY="secret"
export DATADOG_APP_KEY="secret"
export GITHUB_TOKEN="secret"
export GITHUB_REPOSITORIES="quipper/kubernetes-clusters,quipper/server-templates"

どう使うのか

ちゃんと使えるかはまだわかんないんですが、PR 溜まりすぎたときにアラート発砲とかできると思います。あと個人的にも自分が Reviewer になってる PR が n個以上になったらアラートとかもできる気がします。まぁ別に Jasper で通知受けてるからそうそう貯まらないんですけども。

あと renovate が PR バンバン出してくるので、それも一定数たまったらみんなで見ましょうねみたいなムーブもできるかもしれません。

まだデプロイしてませんが、Kubernetes cronjob として Deploy して5分なり30分なりの間隔で定期実行させるつもりです。

何をしたのか

main logic に語るところはあんまりない。

まだ結構雑で、普通にチームメンバーにレビュー投げたらボロクソレビューが入るレベルだと思う。

GitHub から対象の Repository の PR 持ってきて、必要な情報だけ抜き出して(label, author, reviewer, number)それから datadog metric を作る材料をこねこねして custom metrics を送っているだけである。

github actions を使って goreleaser でリリースしたりタグ打ったら Docker push したり CI で lint 流すようにしたりしているがほぼ検索結果のコピペなのであんまり深く理解はしていない。actions 作られているの簡単に使えるので便利だな。近々 github-actions のこのモジュールっていうのかな。なんていうのかわからんが、も作ってみたい。

今後

Issue version も作ろうかなと思う。

思うところ

Datadog のタグの仕様がイケてない。

renovate の PR とか、renovate/datadogrenovate/datadog/2.6.11 って2つ label がついてるんだけど、datadog に同じ key の label を送ると renovate/datadog, renovate/datadog/2.6.11 とカンマ句切りのタグとなる。イケてない。やむなしか。Reviewer も複数人指定するとそうなっちゃんだよなあ。

おわりに

カンファレンスってさ、参加してなんかわかった気になるじゃん、でもそのあと行動しないと意味ないじゃん、で発表したし聴講して、ちゃんとアクションを起こしたので俺は勝ち。みんなも行動していこうな。JTF ラブ!