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 していきたい。