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

Git Flow と Trunk-Based の CI/CD

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

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

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

コンテンツマーケター

Git Flow と Trunk-Based の CI/CD

Git Flow と Trunk-Based の選択肢 Choosing between Git Flow and Trunk-Based Development for effective CI/CD workflows, highlighting their strengths and weaknesses. とTrunk-Based Development (TBD) は、CI/CD ワークフローに大きな影響を与えることができます。ここでは、簡単な概要を示します。

  • Git Flow: 式の管理された環境に最適です。 main, develop, feature, releasehotfix
  • Trunk-Based Development: 主要ブランチに焦点を当て、短期間の機能ブランチを使用します。

小規模チーム、高速リリース、強力な自動テストに適しています。

Quick Comparison: Aspect Git Flow
Trunk-Based Development 長期ブランチ 短期ブランチ
リリースサイクル スケジュールされたリリース 継続的デプロイ
チームサイズ 大規模チーム 中小規模チーム
テスト サイクル終了時のテスト 自動テスト
デプロイリスク ステージングリリースとともに下がる 頻繁な更新とともに上がる
ロールバック 遅い 速い

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

29 - GitFlow と Trunk-Based Development: …

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 ワークフローでは、次のブランチタイプが見つかります: ブランチタイプ 生存期間
メイン/トランク 生産用codeを備えた中心ブランチ 永久
機能ブランチ 個々の変更用の短期間のブランチ 短期間
リリースブランチ リリース前に最終調整用 短期間

開発者は、メインブランチに小さな、段階的な変更を定期的にマージすることが多い。これは、継続的なテストを促進し、迅速なコンフリクト解決を支援する。

トランクベースの利点

TBDはCI/CDとDevOpsを取り巻くチームに多くの利点をもたらします:

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

この構造は、Git Flowとの比較を次のセクションで行うための、流れの高速化をもたらす。

トランクベースの制限

TBDには強みがあるが、チームが対処する必要がある制限もある:

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

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

Git FlowとTrunk-Basedの直接比較

Git FlowとTrunk-Based開発の主な違いを比較検討してみましょう。

機能比較表

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

より速い復旧機能

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

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

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

いくつかのチームは、トランクベース開発をコアサービスに使用し、正式なリリーストラックを持つプロジェクトに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 Pipelines の両方でライブアップデート、ステージドロールアウト、インスタントロールバックを有効にすることができます。 Apple と Google の要件を満たし、クラウドと自社ホストの両方の展開に対応しています。 [1].

概要と推奨事項

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

シナリオ Git Flow トランクベース
チームサイズ 50人以上の開発者 50人未満の開発者
リリースサイクル 週1回または月1回 毎日または複数回
テスト & QA 伝統的なQAサイクル 自動テストに焦点を当てる
デプロイモデル Multi-version, traditional Cloud-native, containerized
リスク耐容度 保守的な規制されたセットアップ 進歩的な迅速なフィードバック
  • 小規模チームでTrunk-Based Developmentを開始し、次に大規模グループに拡大する。CI/CD Pipeliningが完全に自動化されるまで移行する前に確認する。
  • 一貫したcodeレビューを維持し、両方のワークフローで機能フラグを使用する。選択したワークフローに基づいてPipelineの構成を統合する。

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

Git Flow vs Trunk-Based DevelopmentからCI/CD

あなたが Git Flow vs Trunk-Based Development CI/CDの自動化を計画するために使用している場合、接続する。 Capgo CI/CD Capgo CI/CDの製品ワークフローについて Capgo Native Builds Capgo Native Buildsの製品ワークフローについて Capgo Integrations Capgo Integrationsの製品ワークフローについて CI/CD統合 CI/CD統合の実装詳細について GitHub Actions統合 GitHub Actions統合の実装詳細について

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

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

スタートする

最新のブログ

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