kumak1’s blog

kumak1のイラストや技術ログ

Dependabot alerts を手軽に確認したいので GitHub CLI 拡張機能をつくった

作ったもの

github.com

動機

Dependabot について

プロダクトをつくるとき、セキュリティ的に問題ないプログラムを書くのはもちろん、ライブラリに脆弱性が含まれていないか確認して適切にバージョンアップしていく必要がある。 GitHub を利用している人は Dependabot alert に検知を任せていると思う。大変便利。感謝が止まらない。

やりたいこと

検知した内容はブラウザ上で確認できるのだが、手元の terminal で片手間に Github CLI を叩いて情報取得できたら楽で嬉しい。

周辺情報の調査

Github CLI のマニュアル をみてもサブコマンドを見つけられなかった。 それならと、誰かが 拡張機能作ってないか確認 してみたが、「dependabot が作成したPRの一覧取得・マージ操作」ができるものはあれど、alertの一覧取得などができるものはなかった。

それもそのはず、Dependabot の api は現在公開されている apiVersion=2022-11-28 ではパブリックベータ版の機能であり、 Enterprise では 2023/03/07 にリリースされた 3.8 から API利用可能 ・・と、ここ最近整備され始めたものなのだ。

なければ自分で作るしかないね。 拡張機能とか手軽に作れるようになりたかったので、ちょうどいいし。

拡張機能の作成

参考資料

公式が 拡張機能の作成方法マニュアル を用意してくれてる。なんやかんやこれが一番わかりやすい。

どう作っていったかをかいつまんで

CLI のコマンドオプションを雑に追加したかったので、 --precompiled=go を指定bash ではなくGo で作成することにした。 また、手間を省くための配慮があってすごくよかった。特に以下2つ。

  • gh extension install . でローカル拡張機能として追加できる
  • .github/workflows/release.yml は自動生成
    • tag をつけてリモートにプッシュすればリリース完了

作成した拡張機能の便利ポイントアピール

公式のサブコマンドやよくある拡張機能と同様、カレントディレクトリのリポジトリ情報を取りたければ以下コマンドを叩くだけでよい。

gh dependabot-alerts

パッケージ管理や、alertの状態で絞り込むことも可能

gh dependabot-alerts --ecosystem npm --state open

host, owner, repo を指定すれば、カレントディレクトリがどこでも情報取得が可能 (適宜 gh alias を登録しとくと便利)

gh dependabot-alerts --hostname github.com --owner kumak1 --repo gh-dependabot-alerts

同一 host, owner なら、複数リポジトリをまとめて取得も可能

gh dependabot-alerts --hostname github.com --owner kumak1 --repo gh-dependabot-alerts --repo kcg

よかったら使ってみてください

まとめ

「こんな機能欲しい」が結構気軽に開発・公開できて便利。 初学者が Go でモノ作るとき「GitHubCLI拡張機能の公開」は良い第一目標になるやも。