🫨

CIの結果をもう待ちたくない、通知してくれ!

2025/02/06に公開

https://github.com/lll-lll-lll-lll/gh-prciwatch

きっかけ

普段開発のレビュー依頼は基本的にslack経由で行います。
複数のタスクのPRを開発しながら、一方のPRのCIが完了するのに5分以上かかると
他のタスクに集中して忘れてしまうことがあります。
CIが通っていれば良いですが、途中でCIが落ちているとすぐに修正ができず無駄に時間がかかって
しまう。せっかちな自分は「CIが通ったらレビュー依頼しようと」頭の片隅に置きたくないわけです。
早くレビュー依頼したいわけです。
ブラウザ上でCIが回っているとオレンジのIN_PROGRESS状態は分かりますが、
それを気にしながらタスクを進めるのも面倒。
CIが通ったら通知して欲しいと思ったので、Github CLIの拡張機能を作ってみました。
拡張機能でなくてもシェルでいいような気もしますが、使ってみたかったので拡張機能を利用しています。

ざっくりとした仕組み

やっていることは超シンプル

  1. 引数で受け取った(デフォルトはHEAD)ブランチのCIのステータスをgh run listで1分間に1回確認しに行く
  2. completed以外のステータスが0になれば成功
  3. 成功したら引数で渡した--messageとPRのURLをechoする

上記の拡張機能をスクリプトでラップしterminal-notifierで通知するexampleも置いています
https://github.com/julienXX/terminal-notifier

  • 成功した場合はmessage, urlをterminal-notifierで通知
  • 失敗した場合はurlを通知し-openを設定し通知を押すとそのPRに飛べる

サンプルの例

https://github.com/lll-lll-lll-lll/gh-prciwatch/tree/main/example

notify --message "@reviewer :review:"

上記を実行しCIが全て通ると以下のスクリーンショットが画面上に出ます。
右下の表示ボタンを押すと、内部でシェルを実行しておりpbcopyで
画面上に写っているメッセージをコピーします。

環境構築

拡張機能のinstall

gh extension install lll-lll-lll-lll/gh-prciwatch

terminal-notifierのinstall

brew install terminal-notifier

以下のスクリプトをコピーしてお好きなところに保存
パス通す。
https://github.com/lll-lll-lll-lll/gh-prciwatch/blob/main/example/notify

最後に

個人的に使っていて地味に便利に感じました

Discussion