これはなに

GitHubでmainブランチを保護するためのルール設定のメモ。
前提

GitHubでは、ブランチ保護にルールを設定できる。
ここでは、メインブランチの保護にフォーカスし、上記の保護ルールをどのように設定すればいいのかを述べる。
ルール集

mainっぽい名前のブランチの作成を禁止する

main*に"Restrict creations"を設定する。*をつけるのが肝。
mainブランチそのものの更新をすべて停止する

mainに"Restrict updates"を設定する。この設定を有効にすると、プッシュだけでなくリベースやマージなどすべての更新を阻止できる。
mainブランチの削除を禁止する

mainに"Restrict deletions"を設定する。
デプロイを保証する

mainに"Require deployments to succeed"を設定する。
署名付きコミットを要求する

mainに"Require signed commits"を設定する。
プルリクエスト(PR)を要求する

mainに"Require a pull request before merging"を設定する。
- 自分だけの開発なら、“Required approvals"は0にする。他者に必ずレビューしてもらいたいなら、“Required approvals"を1以上にする
- “Dismiss stale pull request approvals when new commits are pushed"は、有効にするのがベター
- 自分だけレビューなくマージして、ほかの人には自分のレビューを強制する場合、CODEOWNERSファイルを作成して、“Require review from Code Owners"を有効にするとよい
- “Require conversation resolution before merging"は有効でもいいかも
CI/CDの通過を強制する

mainに"Require status checks to pass"を設定する。
- “Require branches to be up to date before merging"は有効にするのがベスト
強制pushを禁止する

mainに"Block force pushes"を有効にする。
リポジトリを公開している際のルール集

- デプロイしているブランチに"Require deployments to succeed"を設定する
- 自分が署名付きコミットを使っているなら、保護したいブランチに"Require signed commits"を設定する
- 保護したいブランチに"Require a pull request before merging"を設定する
