Skip to content

Commit 1a0730a

Browse files
authored
Add deployment-environment-and-git-branch-mapping-table (#165)
1 parent 6b2a964 commit 1a0730a

File tree

1 file changed

+36
-13
lines changed

1 file changed

+36
-13
lines changed

documents/forGitBranch/git_branch_standards.md

Lines changed: 36 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -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をブランチ名に利用)
7676
feature/<PROJECTID>-9403
77-
feature/gh-issue-12345
7877

7978
# NG(プレフィックスが無い)
8079
fixtypo
@@ -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

Comments
 (0)