Gitlab-flowのグラフ
Gitlab-flowのブランチ説明
- feature/hotfixは機能開発、不具合対応ブランチです
- masterはメインのブランチ
- pre-production(オプションブランチ)はリリース前のテスト用(git-flowで言うreleaseブランチ)
- productionはリリース済みのコード置き場
Gitlab-flowの流れ
機能開発
- 機能開発するとき、masterブランチからfeature/NAMEブランチを切って開発進む
- 開発が終わったらfeatureブランチからmasterにMerge Requestを作成します。
- masterをステージング環境へデプロイして、確認する
- プリプロダクションへデプロイしたい場合、masterブランチからpre-productionブランチへのMerge Requestを作成します。マージ済みになるとデプロイする
- pre-productionブランチからproductionブランチへのMerge Requestを作成します。マージ済みになるとデプロイする
不具合対応
- 不具合があるとき、masterブランチからhotfix/NAMEブランチを切って対応を行う
- 対応が終わったら、hotfixブランチからmasterにMerge Requestを作成します。
- masterをステージング環境へデプロイして、確認する
- 確認して、問題がなければhotfixブランチを順次pre-production > production にマージ
注意事項
- masterに直接コミットしない
- featureが長生きする場合はmasterから適度にマージするのを忘れずに
- featureブランチはmasterにマージした後、削除する
- hotfixブランチは全てのブランチにマージしたら削除する
メリット・デメリット
メリット
- コミットがダウンストリームへ流れるのですべての環境で全てテスト済みであることを保証します
- CIはサポートされる
- Gitlabはcontinuous integrationサービスを提供する。CIサービスを設定手順は下記に通りです
- リポジトリに
.gitlab-ci.yml
を追加する。-
.gitlab-ci.yml
はjobを定義するファイルです。
-
- プロジェクトにRunnerの利用を設定する
- Runnerは
.gitlab-ci.yml
に定義するjobを実行するバーチャルマシンです。
- Runnerは
- リポジトリに
- CIを設定すると、リポジトリにpush,commitする際に、パイプラインのjobを実行される。
- 例えば:build → 自動テスト → デプロイ
- jobの実行状態の管理も提供するので、とても便利です。
- サンプルリンク gitlab-flow_practice/pipelines
- 参照リンクGetting started with GitLab CI
- Gitlabはcontinuous integrationサービスを提供する。CIサービスを設定手順は下記に通りです
- CIを使ってlatestステータスで、現在環境ごとにどんなブランチをデプロイされるの確認もやりやすい。
- サンプルリンク gitlab-flow_practice/pipelines
デメリット
- 複雑(git-flowと同じ)
- CIが便利ですが、自動実行なのでもし誤commit、pushすると環境にデプロイしちゃう。
#お試しのリポジトリ
構成
- ブランチ
- master
- pre-production
- production
- CI
-
.gitlab-ci.yml
ファイル.gitlab-ci.ymlbefore_script: - echo "ジョブを実行する前の準備コマンド" test: script: - echo "テスト実施コマンド" staging: type: deploy script: - echo "ステージング環境にデプロイするコマンド" only: - master pre-production: type: deploy script: - echo "pre-production環境にデプロイするコマンド" only: - pre-production production: type: deploy script: - echo "本番環境にデプロイするコマンド" only: - tags
- jobの説明
- before_script: jobを実行する前の準備
- test job:
- 内容:(仮)単体テスト実施
- 実行する条件: 全てのブランチにpush,commitする際に実行する
- staging job:
- 内容:(仮)ステージング環境にデプロイ
- 実行する条件: masterブランチのみにpush,commitの際に実行する
- pre-production job:
- 内容:(仮)pre-production環境にデプロイ
- 実行する条件: pre-productionブランチのみにpush,commitの際に実行する
- production:
- 内容:(仮)production環境にデプロイ
- 実行する条件: タグ付けの際に実行する
- jobの説明
-