概要
GitHub の PR で下記のような経験をしたことはありませんか?
- リリースに向けて指定された日時にマージしないといけない PR を誤ってマージしてしまった
- 試験的に作成した PR でマージしてはいけないものをマージしてしまった
自分も上記のようなことをして、ヒヤリとしたことが度々ありました。
そんなときに役立つのが「WIP Action」という GitHub Action です。
これを有効化すると、誤マージを防ぐことに役立ちます。
下記のいずれかのキーワードを PR のタイトル・ラベルに設定すると、マージをできないように保留状態にしてくれるのです。
- wip
- rfc
- work in progress
- work-in-progress
- do not merge
- do-not-merge
- 🚧
この記事では WIP Action を有効にする方法をお伝えします。
WIP Actions 有効化の方法
WIP Actions を有効化するためには、下記2つの作業が必要です。
- WIP Actions の GitHub Actions ワークフローを作成する
- WIP Actions を実行できるようにリポジトリの設定を変更する
順に見ていきます。
リポジトリに GitHub Actions ワークフローを作成する
はじめて GitHub Actions ワークフローを作成する場合は、ディレクトリを作成します。
mkdir -p ./.github/workflows
作成した workflows
ディレクトリ内に、下記のような YAML ファイルを用意します。
name: WIP
on:
pull_request:
types: [opened, synchronize, reopened, edited]
jobs:
wip:
runs-on: ubuntu-latest
steps:
- uses: wip/action@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
実行トリガーについて少し補足しておくと、types: [opened, synchronize, reopened, edited]
は
-
opened
: Pull Request が作られたとき(Draftを含む) -
synchronize
: Pull Request にコミットが追加されたとき -
reopened
: Pull Request が Close された状態から再度 Open になったとき -
edited
: Pull Request のタイトル・本文・ベースブランチが変更されたとき(Draftを含む)
を示します1。
リポジトリの設定を変更する
前述のファイルを作成することで WIP Action を動かすことはできます。
しかし、期待通りの動きはせず、マージできる状態が続きます。
リポジトリの設定により、コミットステータスの書き込み権限がないためです。
まずは、WIP Action を適用したいリポジトリを開き、「Settings」を選択します。
サイドメニューで「Actions」をクリックして詳細メニューを開いた上で、「General」を選択します。

「Workflow permissions」の選択肢を Read repository contents and packages permissions
から Read and write permissions
に変更しましょう。
Actions メニューの設定変更は以上です。
次に、サイドメニューから「Branches」を選択してブランチの設定に移ります。
WIP Action のステータスがグリーンでない場合にマージを防ぎます。

「Add rule」ボタンを押して適用するルールを作成します。
適用するブランチ名を記載して、「Require status checks to pass before merging」にチェックを入れます。
その後出てくる検索窓で「WIP (action)」を選択しましょう2。
これで WIP Action で注意喚起できます。
メッセージやボタンの表示が普段と異なるのがわかるかと思います。
プライベートリポジトリの場合、WIP Action によるブランチの保護は GitHub Team や GitHub Enterprise のアカウントでしか使えないのでご注意ください。
まとめ:WIP Action を活用して誤マージを防ごう
この記事では、PR にキーワードを付けることで誤マージの注意喚起ができる WIP Action を有効にする方法をお伝えしました。
人間気をつけようと思っていても間違えてしまうことはよくあります。
WIP Action が間違いを防ぐ仕組みの一助になれば幸いです。
本記事はQmonus Value Streamの投稿キャンペーン記事です。
-
検索窓が出てこない場合は実際に WIP Action が動くように PR を立ててみましょう。 ↩