🚀

GitHub ActionsでPRにラベル未設定の場合はマージ不可にする方法

2023/08/11に公開

はじめに

リリースノートでラベルごとにノートをきれいに表示する実装をしている方、ラベル運用をしているという方、これからラベル運用をしようとしている方が対象となります。

プルリクエストにおいてラベルの貼り忘れはどうしても起きてしまいます。これを運用ルールで縛るのは難しいです。
ラベルを貼り忘れるとマージボタンが押せなくなるような設定がないか調べてGitHub Actionsで実現する方法をみつけました。これならラベル忘れだとマージができないので忘れることがありません。

GitHub ActionsのYAML

.github/workflows/margecheck.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."

https://github.com/mheap/github-action-required-labels
を利用します。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