個人的 GitHub CLI 活用法
Leaner Technologies で業務委託している西辻です。
最近はチームメンバーも増えてきて、 Pull Request をレビュー/作成する機会がだいぶ増えてきました。
以前から Pull Request 作成を GitHub CLI 経由にしていたのですが、もっと作業を効率化できないかなーと思ってました。
そこで今回テックブログでまとめつつ、楽できそうな部分をコマンドにしていくという試みです。
Pull Request レビュー編
Pull Request のレビューはチーム開発において不可欠かつ、頻度が高いものであるので効率化しておきたいですね。
また、数が貯まるとなかなかレビューする気が起きない(自分だけか)ので、毎朝仕事を始めるときに上がっている Pull Request はさっとレビューしておきたいところです。
レビュー待ちになっている Pull Request を CLI 経由で一覧する
自分が現在メインで開発しているプロダクトはバックエンド 1 Repository, フロントエンド 3 Repository の構成をとっているので、 Pull Request も各 Repository に分散される状況です。
毎朝、 Scheduled reminders で Slack にリマインドは送っているのですが、ついつい見逃しがちです。
なんだろう、自分がレビュー待ちの Pull Request を一覧したい気持ちがある時に一覧したいものです。
前置きが長くなりましたが、各 Repository でレビュー待ちになっている Pull Request 達を GitHub CLI で一覧してみましょう。
#!/bin/bash
for repo in backend forntend1 forntend2 forntend3
do
cd /path/to/$repo
gh pr list -l 'レビュー待ち'
done
現状、今のチームではレビュー待ちのラベルになっていたらレビュー対象になるのでフィルタをかけています。
この辺りは各チームで運用ルールあるので、適応したフィルタにすると良さそうです。
実行すると以下のような出力が得られます。
$ /bin/bash show-waiting-review-prs.sh
Showing 3 of 3 pull requests in your-organization/backend that match your search
#1016 ... branch-name
#1014 ... branch-name
#1013 ... branch-name
No pull requests match your search in your-organization/frontend1
No pull requests match your search in your-organization/frontend2
No pull requests match your search in your-organization/frontend3
レビュー待ちの Pull Request を CLI 経由でまとめてブラウザ上で開く
とりあえず、コンソール上では一覧できましたが、これだけだと「今日もいっぱい Pull Request 上がっているなぁ」くらいにしか使えないので、もう少し実用性を高めていきます。
自分のよくやる操作は、各 Repository のレビュー待ちとなっている Pull Request をブラウザ上でざっと開いてレビューが終わったら閉じていくスタイルです。
これを GitHub CLI を利用して、レビュー待ちになっている Pull Request をまとめてブラウザで開けるようにしてみます。
#!/bin/bash
for repo in backend forntend1 forntend2 forntend3
do
cd /path/to/$repo
PULL_REQUESTS=`gh pr list -l 'レビュー待ち'`
PULL_REQUEST_NUMBER_LIST=`echo "$PULL_REQUESTS" | awk '{ print $1 }'`
for pull_request_number in $PULL_REQUEST_NUMBER_LIST
do
gh pr view $pull_request_number --web
done
done
これでまとめて開けるようになりましたね。
ここまでできると、あとはレビューするまでブラウザのタブを閉じない強い気持ちを持つことで、レビューし忘れをだいぶ防げそうです。
Pull Request 作成編
レビューと同じくらい Pull Request の作成も頻度高い操作なので、こちらも GitHub CLI を利用して楽にできないか試してみます。
Pull Request を CLI 経由で作る
現状、自分が利用しているコマンドは以下です。
$ gh alias list
cpr: pr create -a @me --web
-
-a @me
で自分を Assignee として設定できます。 -
--web
をつけることで Pull Request の作成画面を開きます。
上記の設定で gh cpr
とすると remote push してでブラウザを起動し Pull Request の作成画面を開きます。
最近の Pull Request の Changes を自分はよくコミットメッセージから作ることが多いので、その辺も楽にできないか試してみます。
$ git log main.. --pretty=format:%s | sort | sed 's/^/- [ ] /g' | pbcopy; gh cpr
なんかコマンドに包んだ方が良さそうですが、とりあえずコミットメッセージを Changes へコピペするところは楽にできそうです。
以下のように main ブランチとのコミットがあったとします。
$ git log main.. --pretty=oneline
a4f923c5c5cc02feacb0b354f40b531c71817fb5 (HEAD -> sample1, origin/sample1) sample2
7df1f1f9a74751e8b3ab7b36985cfe96eb92ae7e sample1
これを Changes に貼り付けて加工すると捗りそうな気がしています。
$ git log main.. --pretty=format:%s | sort | sed 's/^/- [x] /g'
- [x] sample1
- [x] sample2
まとめ
GitHub CLI を使うことでターミナルからブラウザへの連携はかなりいい感じにできることがわかりました。
単調な作業は自動化して、レビューだったり Pull Request の Description の詳細をレビュワーにわかりやすくする時間をもっと増やしていきたいですね。
宣伝
Leaner Technologies では日々のちょっとした作業を自動化して自身の業務を効率化していけるエンジニアを募集しています!
Discussion