メインコンテンツにジャンプ

Git Flow vs Trunk-Based for CI/CD

CI/CDワークフローにおけるGit FlowとTrunk-Based開発の違いを比較検討し、強みと弱みを分析します。

マーティン・ドナディュー

マーティン・ドナディュー

コンテンツマーケター

Git Flow と Trunk-Based の CI/CD

CI/CD のための Git Flow と Trunk-Based の選択 Git Flow Git Flow は、構造化されたバージョン管理環境に最適です。複数のブランチを使用し、主に master と develop です。大量のチーム、遅いリリースサイクル、厳格な QA プロセスに適しています。

  • Trunk-Based DevelopmentTrunk-Based Development は、主に 1 つのメインブランチに短期間の機能ブランチを使用します。小規模のチーム、高速なリリース、強力な自動テストに適しています。 main, develop, feature, release比較の要点 hotfix__CAPGO_KEEP_0__
  • __CAPGO_KEEP_0____CAPGO_KEEP_0__

__CAPGO_KEEP_0__

アスペクトGit Flowトランクベース開発
ブランチ複雑さ長期間のブランチ短期間のブランチ
リリースサイクル定期リリース継続的デプロイ
チームサイズ大規模チーム小規模チーム
__CAPGO_KEEP_0____CAPGO_KEEP_1____CAPGO_KEEP_2__
__CAPGO_KEEP_3____CAPGO_KEEP_4____CAPGO_KEEP_5__
__CAPGO_KEEP_6____CAPGO_KEEP_7____CAPGO_KEEP_8__

__CAPGO_KEEP_9____CAPGO_KEEP_10__

__CAPGO_KEEP_11__

Git Flow ワークフロー基本

Git Flow

Git Flowは開発を5つのブランチタイプで組織する: main, develop, feature, releasehotfix。この構造はリリースと並行開発を効果的に管理するのに役立ちます。

Git Flow Branch Structure

Branch Type目的マージ先
メイン生産用途のcodeを保持するN/A
開発機能を統合し、機能ブランチのベースとして機能するN/A
機能個々の機能を構築するために使用される;機能ブランチを作成するために開発から作成される開発
リリース__CAPGO_KEEP_0__main & develop
Hotfixmain & developGit Flowの利点

複数の機能を同時に開発できるようにし、コンフリクトを起こさないようにする。

  • リリースブランチは、最終テストとバージョン準備のための専用スペースを提供し、開発ブランチを継続的な作業に開放する。
  • develop リリース __CAPGO_KEEP_0__
  • Hotfix __CAPGO_KEEP_0__

Git Flowの欠点

  • Branch管理の複雑さ: 複数のアクティブなブランチを管理すると、マージが困難になることがあります。
  • 遅れたデプロイ: 正式なリリースプロセスは、よりシンプルなワークフローと比較してデプロイを遅くする可能性があります。
  • 増加したメンテナンス: 各ブランチには独自のパイプライン構成が必要になり、メンテナンス負荷が増加します。

このワークフローは、厳格なバージョン管理、複数のリリーストラック、または規制の遵守が必要なプロジェクトに最適です。次に、トランクベースの開発の流れについて詳しく説明します。

トランクベース開発の基本

トランクベース開発(TBD)は、主に1つのメインブランチ、通常はトランクまたはメインと呼ばれるものに焦点を当てています。このアプローチは、DevOpsの実践と継続的な統合に近いものです。

トランクベースブランチ構造

一般的なTBDワークフローでは、次のブランチタイプを遭遇することになります。

ブランチタイプ目的期間
メイン/トランクCentral branch with production-ready code永久
機能ブランチ個々の変更用の短期間のブランチ短期間
リリースブランチリリース前の最終調整用一時的な

開発者は、メインブランチに小さな、段階的な変更を頻繁にマージする。 これは、CI/CDとDevOpsを使用するチームにとって、継続的なテストと迅速な対処が可能になる。

トランクベースの利点

TBDは、CI/CDとDevOpsを使用するチームに以下の利点をもたらします。

  • マージコンフリクトの少なさマージが頻繁に実行されるため、コンフリクトを管理することが容易になります。
  • 迅速なフィードバックマージごとに自動ビルドが実行されるため、早期にバグを検出できます。
  • シンプルなパイプラインメインブランチが単一のブランチであるため、CI/CDのセットアップの複雑さが減ります。
  • チーム間のコラボレーションの向上全員が同調できるようにするには、共通の根幹となるものが必要です。

この構造は、Git Flow と比較するための基盤を整える、効率的なワークフローを構築します。

トランクベース制限

TBDには強みがあるが、チームはその課題を解決する必要がある。

課題影響アドレスの指定方法
Code 安定性メインの変更に影響するリスクのある変更自動化テストを強化してください。
チーム統合重複した作業は混乱を引き起こすことがあります。機能フラグと頻繁な小さなコミットに頼る
学習曲線長期間のブランチから移行するトレーニングを提供し、段階的に導入する
拡大問題大規模チームでは頻繁なマージが混乱を招くcodeの徹底的な確認を強制する

TBDの成功には、チーム内でオープンなコミュニケーションと自動テストが必要です。

Git Flow vs. Trunk-Based: 直接比較

Git FlowとTrunk-Based開発の主な違いを比較する

機能比較表

アスペクトGit FlowTrunk-Based Development
Branch Complexity複数の長期間のブランチ短期間のブランチを持つ単一のメインブランチ
リリースのサイクル定期的なリリース継続的なデプロイ
チームのサイズ大規模なチームでは効果的小規模なチームでは適している
Code レビュー プロセスブランチマージ時の正式なレビュー小さな頻度の変更の継続的なレビュー
テスト要件サイクル終了時のテストに焦点を当てる自動テストに大きく依存
学習曲線複数のブランチにより複雑シンプルなワークフローが必要ですが、強力なテストが必要
展開リスクステージドリリースによりリスクが低減頻繁な更新によりリスクが高まります
復旧時間遅いロールバックプロセス高速なリバース機能

各ワークフローの使用時期

Git Flow __CAPGO_KEEP_0__は、企業レベルのプロジェクトに適した構造化されたバージョン管理されたリリースが必要な場合に適しています。複数のサポートバージョンを管理するチームや、正式なQAまたはコンプライアンス要件があるプロジェクトに適しています。

Trunk-Based Development __CAPGO_KEEP_0__は、速度と柔軟性を優先するチームやプロジェクトに適しています。

  • SaaSプラットフォームが迅速な更新が必要な場合
  • 強力なCI/CDパイプラインを持つチーム
  • 自動テストによって裏付けられたプロジェクト
  • 継続的デプロイワークフローまたは頻繁なリリース
  • モバイルアプリプロジェクトが定期的な更新が必要な場合

チームは、両方の方法を組み合わせて使用することもあります: Trunk-Based Developmentを使用してコアサービスと、正式なリリーストラックを持つプロジェクトでGit Flowを使用します。

次のステップ:どちらのアプローチでもCI/CD Pipelinesを設定する方法

CI/CD Pipelineの設定

Git Flow CI/CDの設定

  • 開発ブランチPipeline:ユニットテスト、統合テスト、code品質チェック、ビルド検証、開発環境へのデプロイを実行します。
  • リリースブランチPipeline:フルテストスイートの実行、セキュリティスキャン、リリース候補のビルド、ステージング環境へのデプロイ
  • メインブランチPipeline:バリデーションテストの実行、バージョニングの処理、プロダクションビルドの作成、プロダクションへのデプロイ、リリースのタグ付け

Trunk-Based CI/CDの設定

  • 機能ブランチPipeline: codeに焦点を当てた迅速なユニットテスト、codeスタイルのチェック、ビルドの検証、およびプレビュー環境へのデプロイ。
  • メインブランチパイプライン:徹底した自動テスト、セキュリティスキャン、生産ビルドの作成、進歩的なデプロイ、および自動ロールバック機能をカバーします。

Capgo CI/CD統合

Capgoライブアップデートダッシュボードインターフェイス

CI/CD設定のいずれかにライブオーバー・ザ・エアアップデートを追加するには、Capgoを簡単に統合できます。

Capgoは GitHubアクション, GitLab CI, Jenkins To enable live updates, staged rollouts, and instant rollbacks in both Git Flow and Trunk-Based pipelines. It meets Apple and Google requirements while offering support for both cloud and self-hosted deployments. [1].

概要と推奨事項

チームのサイズとCI/CDの成熟度に基づいて、以下の表に示すようにワークフローを選択してください。

シナリオGit FlowTrunk-Based
チームサイズ50名以上の開発者50名未満の開発者
リリースサイクル週1回または月1回1日または複数回のリリース
[テストとQA伝統的なQAサイクル
自動テストに焦点を当てるデプロイメントモデル多バージョン、伝統的
クラウドネイティブ、コンテナ化リスク耐性保守的、規制されたセットアップ
  • 進歩的、迅速なフィードバック
  • Maintain consistent code reviews and use feature toggles in both workflows. Align your pipeline configurations with the workflow you select.

一貫した__CAPGO_KEEP_0__レビューを維持し、両方のワークフローで機能フラグを使用する。選択したワークフローに基づいてパイプライン設定を整合する。

Git Flow とトランク ベースの CI/CD

あなたが CI/CD 自動化を計画するために使用している場合 Git Flow とトランク ベースの CI/CD CI/CD 自動化を計画するために使用している __CAPGO_KEEP_0__ CI/CD と接続する CI/CD 自動化の Capgo CI/CD の製品ワークフロー ネイティブ ビルドの Capgo Native Builds の製品ワークフロー 統合の Capgo Integrations の製品ワークフロー for the product workflow in Capgo Native Builds, Capgo Integrations for the product workflow in Capgo Integrations, CI/CD統合の実装詳細 CI/CD統合 GitHub アクション統合 GitHub アクション統合の実装詳細について

Capacitor アプリのリアルタイム更新

Capgo を使用して、ウェブ層のバグが生じた場合に、修正をアプリストアの承認待ちの日数を待たずに配信します。ユーザーはバックグラウンドで更新を受け取り、ネイティブの変更は通常のレビュー経路で残ります。

今すぐ始めましょう

最新のブログ記事

Capgo を使用すると、プロフェッショナルなモバイルアプリを作成するために必要な最良の洞察を得ることができます。