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

Git Flow vs Trunk-Based for CI/CD

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

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

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

コンテンツマーケター

Git Flow vs Trunk-Based for CI/CD

Git FlowとTrunk-Based開発のCI/CDワークフローにおける違いを調べ、強みと弱みを比較します。 Git Flow Git Flow と Trunk-Based Development (TBD) は、CI/CD ワークフローに大きな影響を与えることができます。ここでは、簡単な概要を紹介します。

  • Git Flow: 組織されたバージョン管理環境に適したものです。複数のブランチを使用し、 main, develop, feature, releasehotfixを使用します。大規模チーム、遅いリリースサイクル、厳格なQAプロセスに適しています。
  • Trunk-Based Development: シングルメインブランチと短期間の機能ブランチに焦点を当てています。小規模チーム、高速リリース、強力な自動テストに適しています。

比較の要点:

アスペクト Git Flow Trunk-Based Development
ブランチの複雑さ 複数の長期間のブランチ 単一のブランチ、短期間のブランチ
リリースのサイクル スケジュールされたリリース 継続的デプロイ
チームのサイズ 大規模なチーム 小規模から中規模のチーム
テスト サイクル終了時のテスト 自動テスト
デプロイのリスク リリースの段階に従って下がる 頻繁な更新とともに上がる
戻す コンテキスト: Capgoのソリューションマーケティングページ。ロール: UIラベルまたはナビゲーションアイテム。ページ/エリア: page solutions/white-label.astro。 遅い

速い主なポイント

: Git Flowを使用して構造化された遅いワークフローと、TBDを使用してスピードと柔軟性を実現する。両方とも、CI/CD Pipelinesが成功するには堅固なものである必要がある。

YouTube動画プレイヤー Git Flow

ワークフロー基本事項

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

Git Flowブランチ構造

ブランチタイプ 目的 目的のコンテキスト: Capgoのマーケティングウェブサイト。役割: ショートUIラベルまたはナビゲーションアイテム。メッセージキーsubprocessors_table_purpose (Subprocessors Table Purpose)。
メイン codeの本番用 N/A
開発 機能を組み合わせ、機能ブランチのベースとして機能 N/A
機能 個々の機能を構築するために使用される; developから作成 develop
リリース 最終テストとバージョニングの準備; developから作成 main & develop
Hotfix 生産障害を迅速に修正する; mainから作成 main & develop

Git Flowのメリット

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

Git Flowの欠点

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

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

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

トランクベース開発(TBD)は、主に1つのメインブランチ、トランクまたはメインを中心に回るアプローチです。このアプローチは、DevOpsの実践と継続的な統合に最も近いものです。

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

一般的なTBDワークフローでは、次のブランチタイプが見つかります。

ブランチタイプ 目的 ライフスパン
メイン/トランク 生産用のcodeを含む中心ブランチ 永久
機能ブランチ 個々の変更用の短期間のブランチ 短期間
リリース用のブランチ リリース直前の最終調整用 短期間

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

トランクベースの利点

CI/CDとDevOpsでチームが活用するTBDには、以下の利点があります:

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

この構造は、次のセクションでGit Flowと比較するための流れを整理します。

TBDの制限事項

: TBDには強みがありますが、チームは以下の課題に取り組む必要があります:

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

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

Git FlowとTrunk-Basedの直接比較

Git FlowとTrunk-Based開発の重要な領域での比較

機能比較表

側面 Git Flow Trunk-Based開発
Branch複雑さ 複数の長期ブランチ 単一のメインブランチと短期間のブランチ
リリースのサイクル スケジュールされたリリース 継続的なデプロイ
チームのサイズ 大きなチームではよく機能します 小さなチームでは適しています
Code レビューのプロセス ブランチマージ時に正式なレビュー 小さな頻度の変更に対する継続的なレビュー
テストの要件 サイクルの終わりでのテストに焦点を当てます 自動テストに依存する
学習曲線 複数のブランチにより複雑 シンプルなワークフローですが、強力なテストが必要
デプロイリスク 段階的なリリースによりリスクが低減 頻繁なアップデートによりリスクが高まる
復旧時間 遅いロールバックプロセス 迅速な復旧機能

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

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

トランクベース開発 トランクベース開発は、以下のようなチームやプロジェクトに最適です。

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

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

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

CI/CDパイプライン設定

Git Flow CI/CD設定

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

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

  • 機能ブランチパイプライン: 急速な単体テスト、code スタイルチェック、ビルド検証、プレビュー環境へのデプロイ
  • メインブランチパイプライン: 全面的自動テスト、セキュリティスキャン、プロダクションビルドの作成、進歩的デプロイ、自動ロールバック機能

Capgo CI/CD統合

Capgo Live Update Dashboard Interface

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

Capgo は GitHub アクション, GitLab CI、そして Jenkins CI/CD設定の両方にリアルタイムの更新、段階的なロールアウト、および即時のロールバック機能を有効にするには、Git Flow と Trunk-Based Pipelines の両方で機能します。Apple と Google の要件を満たし、クラウドと自社ホストの両方の展開に対応しています。 [1].

概要と推奨事項

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

シナリオ Git Flow Trunk-Based
チームサイズ 50人以上の開発者 50人未満の開発者
リリースサイクル 週1回または月1回 1日1回または複数回
テストとQA 伝統的なQAサイクル 自動テストに焦点を当てる
デプロイモデル Multi-version, traditional Cloud-native, containerized
リスク許容度 conservative,規制されたセットアップ 進歩的、迅速なフィードバック
  • 小規模チームから始めて、Trunk-Based Developmentを拡大して、大規模グループに適用する。CI/CD Pipeliningが完全に自動化されるまで待ってください。
  • 一貫したcodeレビューを維持し、両方のワークフローで機能切り替えを使用します。選択したワークフローに合わせてPipelineの構成を調整します。

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

Git Flow vs Trunk-Based for CI/CDから続きます。

Git Flow vs Trunk-Based for CI/CDを使用している場合 Git Flow vs Trunk-Based for CI/CD CI/CDの自動化計画に使用している場合、 Capgo CI/CD Capgo製品ワークフロー向け Capgoネイティブビルド Capgo製品ワークフロー向け Capgo統合 Capgoワークフロー向け CI/CD統合 __CAPGO_KEEP_0__アクション統合 GitHub実装詳細 GitHubアクション統合

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

When a web-layer bug is live, ship the fix through Capgo instead of waiting days for app store approval. Users get the update in the background while native changes stay in the normal review path.

マーティンによる人間のサポート

今すぐ始めよう

最新のブログ

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