@@ -21,15 +21,15 @@ meta:
2121
2222- GitHub / GitLab の利用
2323- トランクベース開発(フィーチャーフラグ)を ** 採用しない**
24- - ライブラリではなく、アプリケーション(CLIツール、サーバアプリケーションなど )開発で利用する
24+ - ライブラリではなく、アプリケーション(CLIツール、Webアプリケーションなどの )開発で利用する
2525
2626# 基本方針
2727
2828一般的なGitブランチ運用のプラクティスに従い、本規約も以下の方針に則る。
2929
3030- すべての機能開発や不具合修正に、機能ブランチを使用する
3131- プルリクエストを経由して機能ブランチの修正内容をマージする
32- - 永続ブランチはデプロイ可能であるように整合性を保つ
32+ - 永続ブランチは各環境にデプロイ可能となるよう整合性を保つ
3333
3434# ブランチの種類
3535
@@ -74,7 +74,6 @@ feature/#12345
7474
7575# OK(GitHub Issue や JIRA や Backlog のプロジェクトIDをブランチ名に利用)
7676feature/< PROJECTID> -9403
77- feature/gh-issue-12345
7877
7978# NG(プレフィックスが無い)
8079fixtypo
@@ -121,17 +120,41 @@ featureブランチで実現する機能を複数人で開発する場合に使
121120- できるかぎりシンプルなモデルを選択し、運用コストを下げる
122121- プロジェクトのフェーズや体制に応じて、変更を許容する
123122
124- 現実的に利用する可能性が高いブランチの運用パターンを、運用コストが低い順に3つ示す 。
123+ 有名なブランチ戦略として以下がある 。
125124
126- | 名称 | 利用ブランチ | デフォルトブランチ | リリース作業 | 使い所 | 備考 |
127- | ------------------| -------------------------------------------------------------------------| -----------| -----------| --------------------------------------------------------| --------------------------------------------------------------------------------------------------------------|
128- | GitHub Flow | ` main ` <br > ` feature ` | ` main ` | ` main ` | ・開発人数が少なく、検証作業を全員で行う場合 | |
129- | Lite GitLab Flow | ` main ` <br >` develop ` <br >` feature ` <br >` topic ` <br > ` hotfix ` | ` develop ` | ` develop ` | ・稼働済みのプロダクトなど、一定品質を保証する必要がある場合<br >・開発作業とリリース作業が並行しない場合 | 特定の呼称はないためLite GitLab FLowと命名する |
130- | GitLab Flow | ` main ` <br >` develop ` <br >` release ` <br >` feature ` <br >` topic ` <br > ` hotfix ` | ` develop ` | ` release ` | ・リリース作業と開発作業が並行して行われる場合<br >・断面を指定して複数テスト環境にデプロイしたい場合 | 本来のGitLab Flowでは` main ` を` production ` 、` release ` を` pre production ` と呼称する |
125+ - [ git-flow] ( https://nvie.com/posts/a-successful-git-branching-model/ )
126+ - [ GitHub flow] ( https://docs.github.com/ja/get-started/using-github/github-flow )
127+ - [ GitLab Flow] ( https://docs.gitlab.co.jp/ee/topics/gitlab_flow.html )
131128
132- ## 変則的なパターン
129+ 現実的に利用する可能性が高いGitHub Flow、GitLab Flowとその亜種を、運用コストが低い順に3つ示す。本規約ではこれらからベースとなるパターンを選択する。
133130
134- ### developブランチが複数作成する場合
131+ | 名称 | 利用ブランチ | デフォルトブランチ | リリース作業ブランチ | 使い所 | 備考 |
132+ | ------------------| -------------------------------------------------------------------------| -----------| -----------| --------------------------------------------------------| ----|
133+ | GitHub Flow | ` main ` <br >` feature ` | ` main ` | ` main ` | ・開発人数がごく限られる場合 | |
134+ | Lite GitLab Flow | ` main ` <br >` develop ` <br >` feature ` <br >` topic ` <br > ` hotfix ` | ` develop ` | ` develop ` | ・稼働済みのプロダクトなど、品質を保証する必要がある場合 | ※1 |
135+ | GitLab Flow | ` main ` <br >` develop ` <br >` release ` <br >` feature ` <br >` topic ` <br > ` hotfix ` | ` develop ` | ` release ` | ・リリース作業と開発作業が並行して行う必要がる場合<br >・断面を指定して複数テスト環境にデプロイしたい場合 | |
136+
137+ - ※1: 特定の呼称はないためLite GitLab FLowと命名する
138+ - ※2: 本規約では、本来のGitLab Flowの呼称である ` production ` を` main ` 、` pre production ` を` release ` に言い換えている
139+
140+ # ブランチ戦略とデプロイメント環境
141+
142+ 各ブランチ戦略ごとに、デプロイメント環境に対応するブランチを整理する。プロダクション環境リリース前には、mainブランチでタグを打つこととする。
143+
144+ | 名称 | 開発環境 | ステージング環境 | プロダクション環境 | 備考 |
145+ | ------------------| ---------| ----------| -----------| ----------------------------------------------------------------------------------------------------------------------------------------|
146+ | GitHub Flow | feature | main | main | |
147+ | Lite GitLab Flow | feature | develop | main | ・開発環境へはfeatureブランチのPRレビュー後にデプロイする<br >・開発環境へのデプロイ漏れを防ぐため定期的にCI/CDでdevelop断面をリリースすることを推奨する<br >・ステージング環境へはdevelopマージをトリガーにCI/CDでデプロイを推奨する |
148+ | GitLab Flow | develop | release | main | ・開発環境へはdevelopマージをトリガーにCI/CDでデプロイを推奨する<br >・検証期間が長引きそうな場合は、PRレビュー承認後にfeatureブランチから開発環境へのデプロイを許容する |
149+
150+ # ブランチ戦略の拡張
151+
152+ 次のような要件があった場合には、ベースとなるブランチ戦略を拡張する必要がある。
153+
154+ 1 . developブランチが複数作成する場合
155+ 2 . 過去バージョンをサポートする場合
156+
157+ ## 1. developブランチが複数作成する場合
135158
136159![ multi develop branch] ( img/branch_strategy_multi_develop.drawio.png )
137160
@@ -159,7 +182,7 @@ develop2のリリースは以下の手順で行う。
159182- プロダクション環境(=` develop ` )との差分を把握することができる
160183- より一般的な名称である ` develop ` ブランチのみ残るため、新規参画者フレンドリーである
161184
162- ### 過去バージョンをサポートする場合
185+ ## 2. 過去バージョンをサポートする場合
163186
164187![ multi version branch] ( img/branch_strategy_multi_version.drawio.png )
165188
@@ -521,7 +544,7 @@ Branch protection rules にdevelop, mainなど永続的なブランチに保護
521544
522545また、意図しない方法でのマージを避けるためにブランチごとにマージ戦略を設定しておき、想定外のマージ戦略が選択された時に警告色を表示するというサードパーティ製のChrome拡張[ ^ 1 ] も存在する。必要に応じて導入を検討する。
523546
524- [ ^ 1 ] : [ GitHubで誤ったマージ戦略のマージを防ぐChrome拡張機能の開発をした ] ( https://zenn.dev/daku10/articles/github-merge-guardian )
547+ [ ^ 1 ] : https://zenn.dev/daku10/articles/github-merge-guardian
525548
526549#### Tags
527550
0 commit comments