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

CI/CD用のGitフロー対トランクベース

CI/CDワークフローにおけるGit FlowとTrunk-Based開発の違いを調べる

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

選択肢 Git Flow と

  • Git FlowTrunk-Based開発 (TBD) main, develop, feature, release, and hotfix: 強力なバージョン管理環境に適しています。複数のブランチを使用し、
  • トランクベース開発:

Focus on a single main branch with short-lived feature branches. Suitable for smaller teams, fast-paced releases, and strong automated testing.

Aspect Aspect トランクベース開発
Git Flow Branch Complexity Multiple long-lived branches
Single branch, short-lived branches Release Cadence Scheduled releases
チームサイズ 大規模チーム 小規模から中規模のチーム
テスト サイクル終了時のテスト 自動テスト
デプロイリスク ステージリリースで低 頻繁なアップデートで高
ロールバック Slower 遅いものです。

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

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

Git Flow ワークフロー基本

Git Flow

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

Git Flow Branch Structure

ブランチタイプ 目的 マージ先
Main 生産用のcodeを保持する N/A
Develop 機能を統合し、機能ブランチのベースとして機能する N/A
機能 個別機能の作成に使用します。developブランチから作成 開発
リリース 最終テストとバージョニングの準備; developブランチから作成 main & develop
ホットフィックス productionの問題を迅速に修正する; mainブランチから作成 main & develop

Git Flowの利点

  • 複数の機能を同時に開発できるため、競合が生じることなく作業できる。
  • リリースブランチは、最終テストとバージョン準備のための専用スペースを提供し、 開発 ブランチをオープンに保つ。
  • ホットフィックス ブランチは、生産問題を迅速に解決するために他の開発タスクを中断することなく簡単に実行できる。

Git Flowの欠点

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

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

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

トランクベース開発(TBD)は、主なブランチに焦点を当てています。これは、トランクまたはメインと呼ばれます。このアプローチは、DevOpsの実践と継続的インテグレーションに近いです。

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

一般的なTBDワークフローでは、次のブランチタイプを遭遇します:

ブランチタイプ 目的 期間
メイン/トランク 生産用のcodeを備えた中心ブランチ 永久
機能ブランチ Gitフローとトランクベースの比較 短期間
リリースブランチ リリース直前に最終調整を行う 短期間

開発者は、主ブランチに小さな、段階的な変更を頻繁にマージする。 これは、開発者が毎日何度もマージすることを促す。

トランクベースの利点

トランクベースは、CI/CDとDevOpsを取り入れているチームに以下の利点をもたらす。

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

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

トランクベースの制限

: TBDには強みがありますが、チームは課題を解決する必要があります:

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

チーム内でオープンなコミュニケーションと自動テストを備えたTBDを成功させるには、固い基盤が必要

Git FlowとTrunk-Basedの直接比較

Git Flow と Trunk-Based Development の比較

機能比較テーブル

要素 Git Flow トランクベース開発
ブランチ複雑さ 複数の長期間のブランチ 短期間のブランチを持つ単一のメインブランチ
リリースサイクル 予定されたリリース 継続的なデプロイ
チームサイズ 大規模チーム向けに適しています 小規模チーム向けに適しています
Code レビュープロセス ブランチマージ時に正式なレビュー 小規模で頻繁な変更に対する継続的なレビュー
テスト要件 サイクル終了時に焦点を当てる 自動テストに大きく依存
学習曲線 複数ブランチにより複雑 シンプルなワークフローが求められますが、強力なテストが必要
デプロイリスク リスクの低減されたステージリリース 頻繁な更新のリスクの高い
復旧時間 遅いロールバックプロセス 迅速な復元機能

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

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

トランクベース開発 速度と柔軟性を優先するチームやプロジェクトに最適なTrunk-Based Developmentは、以下のようなものです:

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

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

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

CI/CDパイプラインの設定

Git Flow CI/CDの設定

  • 開発ブランチパイプライン:開発環境へのデプロイまで、単体テスト、統合テスト、code品質チェック、ビルド検証を実行します。
  • リリースブランチパイプライン:完全なテストスイートの実行、セキュリティスキャン、リリース候補のビルド、ステージング環境へのデプロイ
  • メインブランチパイプラインCI/CDの設定を実行します。

トランクベースのCI/CD設定

  • 機能ブランチパイプライン: 単位テスト、code スタイルのチェック、ビルド検証、およびプレビュー環境へのデプロイに重点を置いています。
  • プレビュー環境へのデプロイ主ブランチパイプライン

Capgo CI/CD統合

Capgo Live Update ダッシュボード インターフェース

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

Capgoは機能します。 GitHub アクション, GitLab CI, and Jenkins Live Update [1].

GitLab CI

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

Jenkins GitLab CI Trunk-Based
Jenkins チームサイズ 50人以上の開発者
リリースサイクル 週に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 for CI/CDから続きます。

Git Flow vs Trunk-Based for CI/CDをCI/CDの自動化に使用している場合、__CAPGO_KEEP_0__ CI/CD CI/CDの製品ワークフローに__CAPGO_KEEP_0__ CI/CD __CAPGO_KEEP_0__ Native Builds Capgo CI/CD Capgo Integrations Capgo 本機ビルド CI/CDの自動化を計画するには、Git Flow vs Trunk-Based for CI/CDを使用し、Capgo CI/CD CI/CDの製品ワークフローにCapgo CI/CDを接続する。 Capgo製品のワークフローにおけるCapgo統合 CI/CD統合 CI/CD統合の実装詳細 GitHubアクション統合 GitHub アクション統合の実装詳細について

Live updates for Capacitor アプリ

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

最新のブログ記事

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