Skip to main content

Git Flow と Trunk-Based の CI/CD

Git Flow と Trunk-Based Development の違いを調べて、CI/CD ワークフローを効果的に実現するために、強みと弱みを比較検討します。

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

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

コンテンツマーケター

Git Flow と Trunk-Based の CI/CD

Git Flow と Trunk-Based Development (TBD) を選択することは、CI/CD ワークフローに大きな影響を与えることがあります。ここでは、簡単な概要を紹介します。 Git Flow Trunk-Based Development

  • : 最適なのは、バージョン管理された環境で構造化されたものです。複数のブランチを使用します。例えば、master、develop、feature/など。大量のチーム、遅いリリースサイクル、厳密なQAプロセス向けです。 main, develop, feature, release, and hotfix. 大規模チーム、遅いリリースサイクル、厳密なQAプロセス向けです。
  • Trunk-Based Development: 主要ブランチに焦点を当て、短期間の機能ブランチを使用します。小規模チーム、高速リリース、強力な自動テスト向けです。

Quick Comparison:

AspectGit FlowTrunk-Based Development
Branch Complexity複数の長期間のブランチ単一のブランチ、短期間のブランチ
リリースサイクルスケジュールされたリリース継続的デプロイ
チームサイズ大規模チーム小規模から中規模のチーム
テストサイクル終了時のテスト自動テスト
デプロイリスクステージドリリースで低く頻繁な更新で高く
ロールバック遅い速い

主なポイントGit Flow を使用して、構造化された、遅いワークフローと、TBD を使用して、スピードと柔軟性を実現します。両方とも、CI/CD Pipelines が成功するために必要です。

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

Git Flow ワークフロー基本

Git Flow

Git Flow は、5 つのブランチタイプを使用して開発を組織化します: メイン, 開発, 機能, リリース, と ホットフィックス. この構造は、リリースと並行開発を効果的に管理するのに役立ちます。

Git Flow ブランチ構造

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

Git Flowの利点

  • 複数の機能を同時に開発できるため、コンフリクトが発生する心配はありません。
  • リリースブランチは、最終テストとバージョン準備のための専用スペースを提供し、 develop ブランチは、進行中の作業のために開放されます。
  • Hotfix ブランチは、生産問題を迅速に解決するために、他の開発タスクを中断することなく簡単に実行できます。

Git Flowの欠点

  • 複数のアクティブなブランチを管理することは、マージがより困難になる可能性があります。Slower Deployment
  • Slower Deployment: formal release process may slow down deployments compared to simpler workflows.
  • Increased Maintenance: Each branch requires its own pipeline configuration, adding to the maintenance workload.

This workflow works best for projects that need strict version control, multiple release tracks, or compliance with regulations. Next, we’ll explore how this compares to the streamlined approach of trunk-based development.

Trunk-Based Development Basics

Trunk-Based Development (TBD) revolves around a single main branch, often called the trunk or main. This approach aligns closely with DevOps practices and continuous integration.

Trunk-Based Branch Structure

In a typical TBD workflow, you’ll encounter these branch types:

Branch Type目的期間
Main/Trunkcodeの中心ブランチ保護されたブランチ
機能ブランチ個々の変更用の短期間のブランチ短期間の
リリースブランチリリース直前に最終調整用短期間の

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

トランクベースの利点

TBDは、CI/CDとDevOpsを取り入れているチームにとって、以下の利点をもたらす。

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

この構造は、Git Flowとの比較のための基盤を整える、ストリーミングされたワークフローを創出します。

トランクベースの制限

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

課題影響How to Address
CodeRisk of breaking changes affecting mainUse strong automated testing
Team CoordinationOverlapping work can cause disruptionsRely on feature flags and frequent, small commits
Learning CurveTransitioning from long-lived branchesOffer training and phase in gradually
Scaling IssuesFrequent merges can overwhelm large teamscodeを徹底する

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

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

Git FlowとTrunk-Based Developmentの主な違いは次のとおりです。

機能比較表

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

どのワークフローを使用するか

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

トランクベース開発 チームやプロジェクトがスピードと柔軟性を優先する場合、例えば:

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

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

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

CI/CD Pipelineの設定

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 __CAPGO_KEEP_0__ライブアップデートダッシュボードインターフェース

Capgo Live Update Dashboard Interface

To Capgo をCI/CD設定にリアルタイムのオーバー・ザ・エア更新を追加するには、Capgo を簡単に統合できます。

Capgo は GitHub Actions, GitLab CI, Jenkins リアルタイムの更新、ステージングされたロールアウト、インスタントロールバックを両方のGit FlowとTrunk-Based Pipelinesで有効にするには。 [1].

それはAppleとGoogleの要件を満たしながら、Cloudflare、Capacitor、GitHub、Capgo、API、SDK、CLI、npm、bunの両方のクラウドと自社ホストの展開に対するサポートを提供します。

概要と推奨事項

チームのサイズとCI/CDの成熟度レベルに基づいて、以下の表に基づいてワークフローを選択してください。シナリオGit Flowの場合、Trunk-Basedの場合
チームサイズ50名以上の開発者50名未満の開発者
リリースサイクル週1回または月1回1日または複数回
テスト&QA伝統的なQAサイクル自動テストに焦点を当てる
デプロイモデルマルチバージョン、伝統的クラウドネイティブ、コンテナ化された
リスク耐容性conservativeな規制されたセットアップ進歩的な迅速なフィードバック
  • 小規模チームでTrunk-Based Developmentを開始し、次に大規模グループに拡大する。CI/CD Pipeliningが完全に自動化される前に移行する。
  • 一貫したcodeレビューを維持し、両方のワークフローで機能切り替えを使用する。選択したワークフローに合わせてPipelineの構成を整合させる。

一部のチームは、これらのアプローチを組み合わせるかもしれません - メジャーリリース用にGit Flowを使用し、機能の提供用にTrunk-Based Developmentを使用する。どのパスを選択しても、CI/CDを適切に統合し、テストを自動化し、チームを同じページに保つことが成功の鍵です。

Git Flow vs Trunk-Based Development for CI/CD

CI/CDの自動化を計画する場合は、Git Flow vs Trunk-Based Developmentを使用し、CI/CDを __CAPGO_KEEP_0__ CI/CD の製品ワークフローと接続する。__CAPGO_KEEP_0__ CI/CD Capgo CI/CD Capgo CI/CD Capgo Native Builds Capgo Native Buildsの製品ワークフロー Capgo Integrations Capgo Integrationsの製品ワークフロー CI/CD統合 CI/CD統合の実装詳細 GitHub Actions Integration GitHub Actions Integrationの実装詳細

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

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

スタートする

最新のブログ記事

Capgoは、プロフェッショナルなモバイルアプリを作成するために必要な最良の洞察を提供します。