2
5

More than 5 years have passed since last update.

毎日じゃないけど1週間に1度はリリースするGitのフロー

Last updated at Posted at 2018-06-06

はじめに

ぐるなびさんが1日ごとにリリースを行う場合はGitflowを使わないという記事を書いていたので、1週間に1度リリースをしている僕の会社のGitフローについて書いてみようと思います。
「GitFlowは使わない!シンプルな「GitFeatureFlow」を紹介します」

開発の流れ

図が汚くて申し訳ございません。
PNGイメージ-8B62B4BBB6D7-1.png

  • featureブランチはreleaseブランチから作ります。

  • featureブランチで開発中のものはいつでもdevelopブランチにpushできます。

  • featureブランチで開発を終えたらreleaseブランチにプルリクエストします。同時にdevelopブランチにもpushします。

  • その週のリリース物が集まったらstagingにマージしてE2Eテストをします。

  • 問題なければmasterにマージします。

  • developブランチはチームに一声かければいつでも削除して新しくreleaseブランチから作ります。

特徴

  • developのブランチの役割がGitflowやGitHubFlowなどとは異なります。
    実験的な変更を試したり、フィードバックを貰うための環境を作ったり、プルリクエストで簡単な動作チェックなどをするためにdevelopブランチを使っています。
  • リリース物を集約するreleaseブランチが存在します。
    GitLabFlowの考えに近いものですが、フローが複雑になるのが嫌なのでstableのリビジョンは省いてます。
  • pre-productionの位置付けのstagingが存在します。
    E2Eテストを行います。品質確保の要です。

前提

僕の会社ではスクラム開発を行っていています。
原則、1スプリント1週間、1スプリント1リリースのサイクルです。

  • 水曜日:(午前)リリース、(午後)スプリントプランニング
  • 木曜日:スプリント
  • 金曜日:スプリント
  • 月曜日:スプリント
  • 火曜日:(午前)スプリントレビュー・レトロスペクティブ、(午後)リリース準備、自主学習

また、ソフトウェアが動く環境として下記の環境を用意しています。
- 本番環境(Production)
- ステージング環境(Staging)
- 開発環境(Develop)

環境はすべて異なるサーバー、DB、ネットワーク構成で構築しています。
master/staging/developのブランチにプッシュすると、自動的にテストとデプロイが行われます。

GitFeatureFlowとの比較

ぐるなびさんの表を元にうちのフローを評価してみました。

比較する項目 GitFeatureFlow うちのFlow
複数案件対応
大規模開発向き
小規模開発向き
シンプルなフロー ×
リリース時期の調整
リリース日の変更
コンフリクト関連

あれ?GitFeatureFlowより劣っている?🤔
うちの場合はリリース日が固定なので、あまりリリース時期を調整するとか変更するとかで悩んだ事なかったよね・・・。
例外として、緊急リリースしなければならない場合はHotfix的なブランチを作成してすぐにリリースしてしまいます。
代わりにうちは下記のようなものを重要項目としてしています。

比較する項目 うちのFlow
開発環境で思う存分実験できる
リリース計画に沿った開発物を集約できる
ステージング環境で品質を確保
ステージングと同じものが本番で動いている安心感

おわりに

会社ごとにいろいろなGitの使い方があるんだと知りました。うちの会社に入ってきた人は、あまりのフローの複雑さに戸惑う人も多いので、もっと簡単にしたい気持ちもあったりします。
参考になればと思います。

2
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
5