OrganizationのOwnerにはprotection ruleを強制したいけれど、その配下にあるRepositoryのAdminはルールを無視できるようにしたい、という場面がありました。
(OrganizationのOwnerが非開発者で管理してるだけとか)
結論から言うとprotection ruleからは設定できませんでした。残念です。
せっかく検証したので、検証の過程は残しておきます。
以下のOrganizationで検証します。
retrorocketはMemberでryu-retrorocketはOwnerです。
※どちらも私のアカウントですが、retrorocketはPROアカウントです。
Protect matching branches
のInclude administrators
(管理者にもprotection rulesを強制する)を有効化した上でRestrict who can push to matching branches
でホワイトリストを設定すればいけそうな気がします。
Organization administrators, repository administrators, and users with the Maintain role.
と言われていますが、Include administrators
のほうが強制力が上なら無効化できそうです。
なお、レビュー必須をルールに設定しています。
プロテクトされたブランチに直接pushします。
Ownerはブロックできました。
Adminはどうでしょうか。
はい。
PRも無視できません。
Restrict who can push to matching branchesはブランチにプッシュできる人を制限できるだけで、ルールを無視できる設定ではなさそうですね。
Managing a branch protection rule – GitHub Docs
Actionsでゴリゴリ書けばどうにかできそうな気もしますが、そういう運用が必要になった時点でOrganizationの運用ポリシーを見直したほうがよさそうです。もうちょっと柔軟に設定できるようになればよいですね。