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

Git Flow と Trunk-Based の CI/CD

CI/CD ワークフローの有効性を高めるために、Git Flow と Trunk-Based 開発の違いを調べ、強みと弱みを比較検討します。

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

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

コンテンツマーケター

Git Flow と Trunk-Based の CI/CD

Git Flow と Trunk-Based の選択肢 Git Flow CI/CD ワークフローに大きな影響を与えることがあります。 Git Flow と Trunk-Based Development (TBD) の違いについて簡単に説明します。

  • Git Flow: 式立てられたバージョン管理環境に適しています。 main, develop, feature, releasehotfix
  • 大規模チーム、遅いリリースサイクル、厳格なQAプロセスに適しています。Trunk-Based Development

: シングルメインブランチと短期間の機能ブランチに焦点を当てています。

小規模チーム、高速リリース、強力な自動テストに適しています。Quick Comparison:Aspect
Git Flow長期ブランチ短期間のブランチ
リリースのペーススケジュールされたリリース継続的デプロイ
チームのサイズ大規模チーム小規模から中規模のチーム
テストサイクル終了時のテスト自動テスト
デプロイのリスクステージングリリースとともに下がる頻繁な更新とともに上がる
ロールバック遅い速い

主なポイント: Git Flow を使用して構造化された、より遅いワークフローと、速度と柔軟性を必要とする TBD を使用します。両方とも、成功するには堅固な CI/CD Pipelines が必要です。

29 - GitFlow とトランクベース開発: …

Git Flow ワークフロー基本

Git Flow

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

Git Flowブランチ構造

ブランチタイプ目的マージ先
メインcodeの本番用を保持するN/A
開発__CAPGO_KEEP_0__の機能を統合する;機能ブランチの基礎となるN/A
機能__CAPGO_KEEP_0__の個々の機能を構築するために使用する;開発から作成開発
リリース__CAPGO_KEEP_0__の最終テストとバージョニングの準備;開発から作成メイン & 開発
緊急修正生産問題を迅速に修正する; main から作成main & develop

Git Flow の利点

  • 複数の機能を同時に開発できるため、競合が生じることなく
  • リリースブランチは、最終テストとバージョン準備のための専用スペースを提供し、 develop ブランチは、継続的な作業のために開いておくことができる。
  • 緊急修正 ブランチは、生産問題を迅速に修正するために、他の開発タスクに影響を与えることなく、

Git Flow の欠点

  • ブランチ管理の複雑さ: __CAPGO_KEEP_0__
  • 複数のアクティブなブランチを管理することは、統合が困難になる可能性があります。遅れたデプロイ
  • : 正式なリリースプロセスでは、よりシンプルなワークフローと比較して、デプロイメントが遅くなる可能性があります。増加したメンテナンス

: 各ブランチには独自のパイプライン構成が必要であり、これはメンテナンスの負担を増やします。

このワークフローは、厳格なバージョン管理、複数のリリーストラック、規制への準拠が必要なプロジェクトに最適です。次に、トランクベース開発のストリーミングされたアプローチと比較して、これを探します。

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

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

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

一般的なTBDワークフローでは、次のブランチタイプを遭遇します:ブランチタイプLifespan
Main/Trunk本番用codePermanent
Feature Branches個別変更用の短期ブランチShort-lived
Release Branchesリリース直前の最終調整用Temporary

開発者は、主ブランチに小さな、段階的な変更を定期的にマージする。これにより、継続的なテストが促され、迅速なコンフリクトの解決が可能になる。

Trunk-Based Benefits

TBDはCI/CDとDevOpsのチームにいくつかの利点をもたらします:

  • マージコンフリクトが少なくなります: 連続したマージにより、コンフリクトを管理することができます。
  • フィードバックが速くなります: 自動ビルドは毎回のマージで実行され、早期にバグを検出します。
  • シンプルなパイプライン: 単一のブランチにより、CI/CDのセットアップの複雑さが減ります。
  • チームの協力が簡単になります: 共有のトランクにより、全員が一致することが保証されます。

この構造は、Git Flowとの比較を次のセクションで行うための、ストリーミングされたワークフローの準備をします。

トランクベースの制限

TBDには強みがありますが、チームはこれらの課題に対処する必要があります:

課題影響対処方法
Code 安定性主ブランチに影響を与える変更のリスク強力な自動テストを使用
チームの調整重複した作業が混乱を招く機能フラグと頻繁な小さなコミットに頼る
学習曲線長期間のブランチから移行するトレーニングを提供し、段階的に導入する
Scaling Issues大規模チームでは頻繁なマージがチームを圧倒するcodeの徹底的な検証を強制する

TBDを成功的に採用するには、チーム内で開かれたコミュニケーションと自動テストが必要です。

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

Git FlowとTrunk-Based Developmentの主な違いを以下に示します。

機能比較表

アスペクトGit FlowTrunk-Based Development
ブランチ複雑さ複数の長期間のブランチ単一のメインブランチと短期間のブランチ
リリースサイクルスケジュールされたリリース継続的デプロイ
チームサイズ大規模チーム向けに適している小規模チーム向けに適している
Code レビュー プロセスブランチマージ時に形式的なレビュー小規模で頻繁な変更の継続的なレビュー
テスト要件サイクル終了時のテストに焦点を当てる__CAPGO_KEEP_0__
学習曲線__CAPGO_KEEP_1__シンプルなワークフローですが、強力なテストが必要
__CAPGO_KEEP_2__段階的なリリースでリスクが低減__CAPGO_KEEP_3__
頻繁な更新でリスクが高まります__CAPGO_KEEP_4__ロールバックプロセスが遅くなります

__CAPGO_KEEP_5__

迅速な復旧機能が可能になります __CAPGO_KEEP_0__は、構造化されたバージョン管理されたリリースが必要な大規模なプロジェクト向けに最適です。複数のサポートバージョンを管理するチームや、正式なQAまたはコンプライアンス要件を持つプロジェクトに適しています。

Trunk-Based Development __CAPGO_KEEP_0__は、スピードと柔軟性を優先するチームやプロジェクトに最適です。以下のようなケースに適しています。

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

いくつかのチームは、Trunk-Based Developmentをコアサービスに使用し、正式なリリーストラックを持つプロジェクトにGit Flowを使用します。

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

CI/CDパイプライン設定

Git Flow CI/CD設定

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

トランクベースCI/CDセットアップ

  • : クイック単体テスト、__CAPGO_KEEP_0__ スタイルチェック、ビルド検証、プレビュー環境へのデプロイを実行します。: Focuses on quick unit tests, code style checks, build verification, and deployment to a preview environment.
  • : 組み込み自動テスト、セキュリティスキャン、プロダクションビルドの作成、進歩的デプロイ、自動ロールバック機能の実行をカバーします。__CAPGO_KEEP_0__

Capgo CI/CD統合

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

Capgo を使用して、CI/CD設定のいずれかにライブオーバー・ザ・エアアップデートを追加することができます。

Capgo は GitHub アクション, GitLab CI, Jenkins Git FlowとTrunk-Basedパイプラインの両方で、ライブアップデート、ステージドロールアウト、インスタントロールバックを有効にするには、__CAPGO_KEEP_0__ を使用します。AppleとGoogleの要件を満たし、クラウドと自社ホストの両方の展開に対応しています。 [1].

概要と推奨事項

チームのサイズとCI/CDの成熟度レベルに基づいて、以下の表を使用してワークフローを選択してください。

シナリオGit FlowTrunk-Based
チームサイズ__CAPGO_KEEP_0__ developers__CAPGO_KEEP_0__ developers
リリースサイクル毎週または月に毎日または複数回
テスト & QA伝統的なQAサイクル自動テストに焦点を当てる
__CAPGO_KEEP_0__ モデルバージョン管理の伝統的なアプローチCloud-native、コンテナ化された
リスク耐性保守的な規制されたセットアップ進歩的な迅速なフィードバック
  • 小規模チームでTrunk-Based Developmentを開始し、次に大規模グループに拡大する。CI/CDパイプラインが完全に自動化されるまで移行する前に確認する。
  • codeの統一されたレビューを維持し、両方のワークフローで機能フラグを使用する。選択したワークフローに合わせてパイプラインの構成を整合させる。

チームによっては、これらのアプローチを組み合わせるかもしれません - メジャーリリース用にGit Flowを使用し、機能の提供にTrunk-Based Developmentを活用する。どのパスを選択しても、CI/CDの統合、テストの自動化、チームの共通の目標を維持することが成功の鍵です。

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

Capgo を使用して、ウェブ層のバグが生じた場合、ユーザーにバックグラウンドで更新を提供し、ネイティブの変更は通常のレビュー経路を通じて

スタートする

最新のブログ記事

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