GitHub ActionsでPRにラベル未設定の場合はマージ不可にする方法
はじめに
リリースノートでラベルごとにノートをきれいに表示する実装をしている方、ラベル運用をしているという方、これからラベル運用をしようとしている方が対象となります。
プルリクエストにおいてラベルの貼り忘れはどうしても起きてしまいます。これを運用ルールで縛るのは難しいです。
ラベルを貼り忘れるとマージボタンが押せなくなるような設定がないか調べてGitHub Actions
で実現する方法をみつけました。これならラベル忘れだとマージができないので忘れることがありません。
GitHub ActionsのYAML
name: PR Label Check
on:
pull_request:
types: [opened, reopened, synchronize, labeled, unlabeled]
jobs:
do-not-merge:
runs-on: ubuntu-latest
name: Label Check
steps:
- name: check labels
uses: mheap/github-action-required-labels@v5
with:
mode: exactly
count: 1
labels: "bug,enhancement,feature,question,documentation,help wanted,good first issue,invalid,wontfix"
add_comment: true
message: "This PR is being prevented from merging because the label is missing."
labels
のところに指定しているラベル(サンプルはデフォルトラベル)が1つ以上設定されているとOKとし、NGのときはラベルをセットしてくださいというメッセージを表示しています。
GitHub リポジトリ設定
Branch protection rule
を設定します。
Protect matching branches
>Require status checks to pass before merging
>Require branches to be up to date before merging
と選択し、YAMLに記載しているjobs
>name
を登録しましょう。
これで、このフローがNGの場合は保護がかかるようになります。
実際に動かしてみた
プルリクエストを作成します。このとき、ラベルを貼り忘れてみます。
This PR is being prevented from merging because the label is missing.
とコメントが表示され、チェックの失敗が表示されています。
そして、マージボタンがグレーアウトして押せなくなっています。
ラベルを追加しました。チェックが成功しました。
マージボタンが使えるようになりました!!!
さいごに
しくみでミスを防ぐのは不安定な運用ルールを作るより根本解決となります。
ラベル運用されている方は使ってみてはいかがでしょうか?
Discussion