Github CLIを使って,PRの情報(URL,PRなど)を取得するには,どうすればいい?
実は,gh pr view
コマンドで,PRの情報を出力できます.下記の例は,masterブランチをheadとするPRの情報を出すためのコマンドを示しています.
gh pr view master > pr.txt
出力したPRの情報(pr.txt)は以下のようです.
title: Publish 2020/09/23
state: OPEN
author: willsmile
labels: Publish
assignees:
reviewers:
projects:
milestone:
number: 20
url: https://github.com/willsmile/gatsby-willsmile-portal/pull/20
--
これらの情報から,必要なものを取り出すために,grepとawkコマンドを活用できます.
例えば,PRのurlを取り出したい場合,このような書き方で実現可能です.
gh pr view master | grep url | awk '{print $2}'
それらの情報を取得したら,何かできるのか?
一番想像しやすい実用方法は,コマンドで特定のPRをマージするということです.
以下のは,筆者が作ったMakefileです.それを使うと,masterブランチからdeploymentブランチへのPRを作って(make pr-create),作ったPRをマージする(make pr-merge)という処理を自動化することが可能になります.
NAME := portal-deployer
work_branch := master
publish_branch := deployment
pr_label := Publish
pr_title = Publish $(shell date +%Y/%m/%d)
pr_url = $(shell gh pr view master | grep url | awk '{print $$2}')
## Create pull request for publishing in Github
.PHONY: pr-create
pr-create:
gh pr create --title "$(pr_title)" --body "Generated by $(NAME)" \
--base $(publish_branch) --head $(work_branch) --label $(pr_label)
## Merge pull request for publishing in Github
.PHONY: pr-merge
pr-merge:
gh pr merge $(pr_url) --delete-branch=false --merge
注意事項:pr_url = $(shell gh pr view master | grep url | awk '{print $$2}')
での$$2
はタイポではなくて,Makefileの変数として使えるために意図的に書いたものです.