Githubのブランチ保護機能をつかう

作成日:2023/01/09

概要

Github のブランチ保護ルールを設定することで、「Github Actions の特定のワークフローが Pass していないとマージできないというルール」「force push をさせないというルール」を強制できる(それ以外にも設定できるが今回は行わない)。 その他にも「ブランチの削除をできないようにする」こともできる。

ワークフローを Pass しないとマージできない設定

このドキュメントの通りにRequire status checks to pass before mergingにチェックを入れる。

そして、上記にチェックを入れると表示される検索フォームに対象のワークフローのジョブ名を入れる。ワークフロー名ではなくジョブ名である。

これで、実行されたワークフローのステータスチェックにRequiredの記述が追加され、それが Pass しないとマージできないようになる。

ワークフローをスキップしたときにマージできない問題を解決する

特定の条件下でスキップするワークフローが存在し上記のブランチ保護を行っている場合、ワークフローが発火しないために PR がマージできなくなってしまう問題がある。例えば、paths-ignoreで docs ディレクトリを除外している場合、docs ディレクトリのみ変更した PR を発行してもワークフローは発火せずにマージできなくなる。 これを fix するためにドキュメントのトラブルシューティングに記載された内容を実施する必要がある。

force push をさせない設定

Allow force pushesを無効にする。

ブランチの削除をできないようにする

マージ後のブランチ自動削除を有効にしているが、develop ブランチなど一部削除してほしくないブランチが存在する場合は、Allow deletionsを無効にしておく。

おわりに

他にも設定があるので、使いながら fix していきたい。