infoMore than 1 year has passed since last update.
SI向けGitHub-flow改
Last updated at Posted at 2022-12-05
はじめに
- SIとしてGitブランチ戦略を考えた時、何が最適か見つからなかった
- GitHub-flowは都度リリースする形態が前提なので、SIの様にフェーズという長い期間を経てリリースするのに向かない
- Git-flowはdevelopブランチとmainブランチの定義が曖昧、きっちり管理しないとカオスになる
- GitLab-flow, gitworkflows...
- 運用としては単純明快なGitHub-flowがいいが、SIにおける運用や各ブランチの明確化、CICD運用を踏まえて改良して運用することにした。
概要
-
main
がメインである
- タスク作業は
feature/#{issue番号}
で行う
- 不具合対応は
hotfix/#{issue番号}
で行う
- 環境確認用ブランチ(検証:
env-staging
/ 本番: env-production
)を用意する
- 各環境にデプロイする際に対象ブランチで上書きし、デプロイする
上書き元と同一のブランチとしたいため、コンフリクトリスクがあるmergeやrebaseは行わない
# STG環境の場合
git checkout env-staging
git reset --hard 上書き元ブランチ
- 本ブランチはデプロイするためだけのテンポラリブランチであり、壊れても無くなっても問題ないものとする
- 現在の各環境の状態となる
- ブランチpushによるCICDを行うなら本ブランチをトリガーとする
- 状況により環境ブランチを切る (開発:
env-development
等)
- ファーストリリース前後で運用方法が変わる(下図参照)
- ファーストリリース後の
main
は問題なく動作する本番環境と同じもの(受入テストを完了したもの)
という扱いとする
ファーストリリース前
![github_flow_kai-before.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F152189%2F02f3a567-ab28-7664-869d-ab5bb46b73a2.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=4078224071d85c299fdec9f72c7ee546)
- 開発者にとっては基本的にGitHubFlow
- タスク作業をする際は、
main
から feature/#{issue番号}
を切る
- 各環境動作確認時
-
main
を環境確認ブランチ(検証: env-staging
/ 本番: env-production
)へ上書きする
# STG環境の場合
git checkout env-staging
git reset --hard master
- 対象ブランチをデプロイし、動作確認する
- リリース時
-
main
をenv-staging
, env-production
へ上書きし各環境にデプロイ、動作確認する
# STG環境の場合
git checkout env-staging
git reset --hard master
ファーストリリース後
![github_flow_kai-after.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F152189%2F836217cd-aa3d-33a3-fc7f-2ce042d166e2.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=1904c339d4c68cab93d78c3f5ebf9283)
-
main
よりrelease/ver{バージョン番号}
を切る- タスク作業をする際は、release/ver{バージョン番号}
からfeature/#{issue番号}
を切る
- タスク完了後、
release/ver{バージョン番号}
へマージする
- 不具合修正が生じたら、
main
からhotfix
を切る
- 修正後、
env-staging
, env-production
へ上書きし各環境にデプロイ、動作確認する
# STG環境の場合
git checkout env-staging
git reset --hard hotfix/#***
- 本番の動作確認完了後、
master
へマージする
- 開発中の
release/ver{バージョン番号}
へマージする
- リリース時
-
release/ver{バージョン番号}
をenv-staging
, env-production
へ上書きし各環境にデプロイ、動作確認する
# STG環境の場合
git checkout env-staging
git reset --hard release/ver{バージョン番号}
- 本番の動作確認完了後、
main
へマージする
Register as a new user and use Qiita more conveniently
- You get articles that match your needs
- You can efficiently read back useful information
- You can use dark theme
What you can do with signing up