GitHub ActionsでPull Requestのラベルのつけ忘れをチェックする
GitHubのラベル
GitHubのラベルって色々な使い道があって便利ですよね。
僕は最近、自動生成リリースノートの分類にも使えるということを知りました:
でもラベルを貼るのは基本的に人間です。そして人間は忘れやすい生き物です。
忘れやすいのなら機械でチェックしてあげようということで、掲題の「GitHub ActionsでPull Requestのラベルのつけ忘れをチェックする」ということを実現してみました。
やること
やることはとても簡単です。
下記のようなGitHub Actions用YAMLを書いてやるだけです:
name: Assert PR Labels
on:
pull_request:
types: [opened, reopened, synchronize, labeled, unlabeled]
jobs:
check_labels:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
ref: main
- name: Check if PR labels are empty
run: |
LABELS=$(gh pr view ${{ github.event.pull_request.number }} --json labels | jq '.labels')
if [[ $LABELS == "[]" ]]; then
echo "PRにラベルが1つも貼られていません。ラベルを貼ってください。"
exit 1
else
echo "PRにラベルが貼られています。OK!"
fi
env:
GH_TOKEN: ${{ github.token }}
なお、github.token
を使う場合は下記画像の設定が必要なので注意してください(リポジトリのSettings→Actions→General→Workflow permissions):
やっていることとしては、gh pr view ${{PR番号}} --json labels | jq '.labels'
をして、その結果が空かどうかチェックしているというとてもシンプルなものです(gh pr view
のマニュアルはこちら)。gh
、GitHub Actionsでも使えてとても便利です。
これでラベルが貼られていなければCIがコケるので、ラベルの貼り忘れに人間が気づけるという仕組みです。
ちなみにこのYAMLはChatGPT 4さんに尋ねて作ってもらったものを少しアレンジしたものです。ChatGPT 4優秀ですね。
まとめ
とっても簡単なGitHub Actionsの活用法でした。みなさんも試してみてはいかがでしょうか。
応用すれば、特定の条件で特定のラベルが貼られていないことをチェック、とかもできそうです。
最後に手前味噌ですが、GitHubのラベルに関して、「リポジトリをまたいでラベルを操作する」OSSツールを作っているので、よかったら使ってみたりしてみてください:
Discussion