ひとりリポジトリでもprotected branchesを使いたいなと思って、
いろいろ調べてみたときの備忘録(*´ω`*)
無料プランだとpublicリポジトリしか使えないので注意。
保護ブランチ(protected branches)とは
指定したブランチに対して、制限をつけれる機能
- マージにPRレビュー必須
- ステータスチェックが必須
- マージをsquashかrebaseに限定
- pushできるユーザを制限
などなどを設定できる。
PersonalアカウントとOrganizationアカウントで、
少し設定が異なるので要確認。
やりたかったこと
リリースの流れを自動化をしたいなと思い、
- ベースブランチ(main)にマージされたら
npm version
でバージョンを変更し、- 新しいバージョンでtagをつけて、
- commitとtagをpush
- GitHub Releaseを作成する
という作業をするGitHub Actionsを考えていた。
ひとりリポジトリなので、保護ブランチの設定では、
「Do not allow bypassing the above settings」
をONにして、管理者の自分も直pushできないようにしたかった。。
ためしたこと
まずは何もしない場合の動き
オプションを有効にして、管理者を含めてpushできなくできた。
すると、GitHub Actions内でnpm version
で
バージョンを変更したコミットもpushできず。。
mainブランチへのpushではないため、
tagのpushだけであれば、問題なくできた。
回避策を探す
- 回避策はいろいろあるっぽいけど、どれもつらい
- 組織ユーザを作って、そのPATをつかう
- 一時的に保護を解除してpushする
- リリース用のPRを作ってマージ
いくつか議論があるっぽいけど、ちゃんとPRつくってマージしないと危ないよってことらしい
Organizationの場合だと、GitHub Appもpushできるように設定できるっぽい
- Managing a branch protection rule - GitHub Docs
- ただ
tibdex/github-app-token
を使ったトークン発行で対応するのはあぶなそう。。
保護ブランチを使うときはPRをつくろう
勝手にコードを変更されないのが安全なので、やっぱりそういう流れがよい。
- 手動作業
- バージョンを変更しcommit&push
- PRを作成
- PRをレビューしてマージ
- 自動化
というかたちがよいっぽい気がする。
以上!! 個人開発でもGitHubを使いこなして、楽になりたい(*´ω`*)
参考にしたサイト様
- GitHub Actions: NPM Version Bump using Pull Request Labels | by Johnathan Miller | Medium
- GitHub APIを使うBotたちのGitHub Appsへの移行 - KAYAC engineers' blog
- [GitHub]保護ブランチへのマージ向けPR作成をworkflow_dispatchで手軽くやってみた | DevelopersIO
- GitHub Actions で簡単にバージョン番号付きリリースとリリースノートを作成する方法
- Automate npm publishing with GitHub Actions, proper changelog, and release notes
- GitHub Actions中でpushする際にgithub-actions[bot]をユーザーとして使う
- Githubでブランチ保護設定した時の作業メモ - Qiita
- 保護ブランチへの直 push を禁止する
- GitHub Actionsで「OpenAPI の自動バージョニング」から「API Clientのnpmパッケージ生成」までを完全自動化 〜bypass機能を利用してみました〜 - BASEプロダクトチームブログ
- LernaとGithub Actionsでmonorepoライブラリのリリースを楽にする - Link and Motivation Developers' Blog