GitHubのレポジトリーのmasterにpushができないようにする
目的
maseterにpushするとCI/CDが走ってしまい勝手にデプロイされてしまう。気をつけていても間違ってmasterにpushしてしまうので、システム的にmasterにはpushできないようにする。(自分がadministratorでもできないようにする)
調べた結果、以下の方法1だけすれば良い気がします。
方法1;Branch protection rule
GitHubレポのsettings -> Branches で
- Branch name pattern に master を設定して、
- Require pull request reviews before merging にチェックを入れて、
- Include administrators にチェックを入れる。(これにチェックを入れないと個人レポジトリーのオーナーではpushができてしまう。Organizationのレポジトリーでは未調査)
これだけでmasterへのpushはエラーとなります。
方法2:.git/hooks/pre-push
方法1はGitHubサーバー上で行う方法でした。こちらはクライアント側で行う方法です。
.git/hooks/pre-pushにpush前に実行されるスクリプトを置いて、pushしたときにmasterに対してのpushであれば中止する、ということが可能です。
ただGitHub上で実行されるわけではなくクライアントマシン上で実行されるものなので、どうやってスクリプトを配り、実行を強制させるのかは別で考えないといけません。
スクリプト自体は下の参考のリンクを参照ください。(僕は動作未確認です)
参考
Stack Overflowの質問
https://stackoverflow.com/questions/46146491/prevent-pushing-to-master-on-github
pre-pushのスクリプト
https://gist.github.com/vlucas/8009a5edadf8d0ff7430