Passer au contenu principal

Git Flow vs Trunk-Based pour CI/CD

Découvrez les différences entre Git Flow et Trunk-Based Development pour des workflows CI/CD efficaces, mettant en avant leurs forces et leurs faiblesses.

Martin Donadieu

Martin Donadieu

Spécialiste du contenu

Git Flow vs Trunk-Based pour CI/CD

Choisir entre Git Flow et le développement basé sur le tronc (TBD) peut avoir un impact significatif sur votre flux de CI/CD. Voici une brève analyse :

  • Git Flow : Idéal pour les environnements structurés et contrôlés par version. Il utilise plusieurs branches comme main, develop, feature, release et hotfix. Adapté pour les grandes équipes, les cycles de mise à jour plus lents et les processus de QA stricts.
  • Trunk-Based Development : Se concentre sur une branche principale unique avec des branches de fonctionnalités à vie courte. Conçu pour les équipes plus petites, les mises à jour rapides et les tests automatisés solides.

Comparaison Rapide :

Aspect Flux Git Développement basé sur la branche principale
Complexité de la branche Plusieurs branches longues Une branche, des branches de courte durée
Rythme de la mise en production Mises en production planifiées Déploiement continu
Taille de l'équipe Équipes grandes Petites à moyennes équipes
Test Test de fin de cycle Test automatisé
Risque de déploiement Moins avec des lancements étalés Plus avec des mises à jour fréquentes
Rollback Plus lent Plus rapide

Point cléUtilisez Git Flow pour des workflows structurés et plus lents, et TBD pour la vitesse et la flexibilité. Les deux nécessitent des pipelines CI/CD solides pour réussir.

29 - GitFlow vs. Développement basé sur le tronc : Gestion …

Flux Git Bases du flux de travail

Flux Git

Le flux Git organise le développement à l'aide de cinq types de branches : principal, développement, fonctionnalité, mise en productionet correction d'urgence. Cette structure aide à gérer les mises en production et le développement parallèle de manière efficace.

Structure de branches Git Flow

Type de branch Objectif Cible de fusion
Principal Contient des code prêts à la production Pas applicable
Développement Intègre des fonctionnalités ; sert de base pour les branches de fonctionnalités Pas applicable
Fonctionnalité Utilisé pour développer des fonctionnalités individuelles ; créé à partir de develop développement
Sortie Prépare la version finale et la mise en version ; créé à partir de développement main & développement
Correctif Répare les problèmes de production rapidement ; créé à partir de main main & développement

Avantages de Git Flow

  • Permet de développer plusieurs fonctionnalités en même temps sans causer de conflits.
  • Les branches de sortie fournissent un espace dédié pour la mise en version finale et la préparation, gardant la développement branch ouverte pour le travail en cours.
  • Corrigement de chaud Les branches facilitent la résolution des problèmes de production rapidement sans interrompre d'autres tâches de développement.

Inconvénients de Git Flow

  • Complexité de gestion des branches : La gestion de plusieurs branches actives peut rendre la fusion plus difficile.
  • Déploiement plus lent : Le processus de mise en production formel peut ralentir les déploiements par rapport à des workflows plus simples.
  • Entretien accru : Chaque branche nécessite sa propre configuration de pipeline, ce qui ajoute au fardeau de l'entretien.

Ce workflow fonctionne le mieux pour les projets qui nécessitent un contrôle de version strict, plusieurs pistes de mise en production ou une conformité aux réglementations. Nous allons explorer ensuite comment cela se compare à l'approche simplifiée du développement basé sur le tronc.

Bases du Développement Basé sur le Tronc

Le Développement Basé sur le Tronc (TBD) tourne autour d'une seule branche principale, souvent appelée le tronc ou la branche principale. Cette approche s'aligne étroitement sur les pratiques DevOps et l'intégration continue.

Structure de Branches Tronquées

Dans un workflow TBD typique, vous rencontrerez ces types de branches :

Type de Branch But Durée de vie
Branch principale/Tronc Branch centrale avec des code prêts à la production Permanent
Branches de fonctionnalités Branches temporaires pour des modifications individuelles Court terme
Branches de version Utilisé pour les dernières retouches avant une mise en production Temporaire

Les développeurs intègrent régulièrement de petites modifications incrémentales dans la branche principale - souvent plusieurs fois par jour. Cela encourage les tests continus et aide à résoudre les conflits rapidement.

Avantages de la branche principale

Le TBD apporte plusieurs avantages aux équipes travaillant avec CI/CD et DevOps :

  • Moins de conflits de fusion: Les merges réguliers gardent les conflits gérables.
  • Feedback plus rapide: Les builds automatisés s'exécutent avec chaque merge, détectant les bogues tôt.
  • Pipelines plus simples: Une seule branche réduit la complexité des configurations CI/CD.
  • Collaboration d'équipe meilleure: Une branche principale garantit que tout le monde reste aligné.

Cette structure crée un flux de travail simplifié, préparant ainsi la scène pour une comparaison avec Git Flow dans la section suivante.

Limites de la base de tronc

Même si TBD a ses forces, elle comporte également des défis auxquels les équipes doivent faire face :

Changement Impact Comment y remédier
Code Stabilité Risque de modifications de rupture affectant la branche principale Utilisez des tests automatisés solides
Coordination de l'équipe Le travail en chevauchant peut causer des perturbations Relyez sur les drapeaux de fonctionnalité et des commits fréquents et petits
Courbe d'apprentissage Passer d'arbres de branches longues Proposez une formation et introduisez progressivement
Problèmes de scaling Les merges fréquents peuvent submerger les grandes équipes Imposer des revues approfondies code

Le succès de TBD nécessite des tests automatisés solides et une communication ouverte au sein de l'équipe.

Git Flow vs. Trunk-Based: Comparaison directe

Voici comment Git Flow et le développement basé sur le tronc se comparent dans les domaines clés :

Tableau de comparaison des fonctionnalités

Aspect Git Flow Développement basé sur la branche principale
Complexité des branches Plusieurs branches longues Une seule branche principale avec des branches de courte durée
Fréquence de mise en production Mises en production planifiées Déploiement continu
Taille de l'équipe S'adapte bien aux équipes plus grandes Mieux adapté pour les équipes plus petites
Code Processus de revue Évaluations formelles lors des fusion de branches Évaluation continue de petites modifications fréquentes
Exigences de test Concentration sur les tests fin de cycle Dépendance lourde aux tests automatisés
Courbe d'apprentissage Plus complexe en raison de plusieurs branches Flux de travail plus simple, mais nécessite des tests solides
Risque de déploiement Moins de risque avec des lancements étalés Plus de risque avec des mises à jour fréquentes
Temps de récupération Procédures de retrait plus lentes Capacités de reversion plus rapides

Quand utiliser chaque workflow

Git Flow Git Flow est idéal pour les projets d'entreprise qui nécessitent des sorties structurées et versionnées. Il convient bien aux équipes gérant plusieurs versions prises en charge et aux projets avec des besoins de QA ou de conformité formels.

Développement basé sur le tronc Cela fonctionne le mieux pour les équipes et les projets qui donnent la priorité à la vitesse et à la flexibilité, comme :

  • Plateformes SaaS nécessitant des mises à jour rapides
  • Équipes avec des pipelines CI/CD solides
  • Projets soutenus par des tests automatiques fiables
  • Flux de déploiement continu ou des mises à jour fréquentes
  • Projets d'applications mobiles nécessitant des mises à jour régulières

Certaines équipes combinent même les deux méthodes : l'utilisation du développement basé sur le tronc pour les services de base et Git Flow pour les projets avec des pistes de versionnement formelles.

Prochainement : Comment configurer les pipelines CI/CD pour l'une ou l'autre approche.

Configuration du pipeline CI/CD

Configuration du pipeline CI/CD Git Flow

  • Pipeline de la branche de développementExécute les tests unitaires, les tests d'intégration, code les vérifications de qualité, la vérification de la construction et le déploiement dans l'environnement de développement.
  • Pipeline de la branche de versionExécute l'ensemble du jeu de tests, les scans de sécurité, construit un candidat de version et déploie dans l'environnement de pré-production.
  • Pipeline de la branche principaleExécute les tests de validation, gère la version, crée la build de production, déploie dans la production et étiquette la version.

Configuration du pipeline CI/CD Trunk-Based

  • Pipeline de la branche de fonctionnalité: Se concentre sur les tests unitaires rapides, les vérifications code style, la vérification de la construction et le déploiement dans un environnement de prévisualisation.
  • Pipeline de Branch Principale: Couvre les tests automatisés approfondis, les analyses de sécurité, la création de la construction de production, le déploiement progressif et les fonctionnalités de retrait automatique.

Capgo Intégration CI/CD

Capgo Interface de tableau de bord de mise à jour en direct

Pour ajouter des mises à jour en direct sur les airs à l'une ou l'autre configuration CI/CD, Capgo peut être intégré de manière fluide :

Capgo fonctionne avec GitHub Actions, GitLab CI, et Jenkins pour activer les mises à jour en temps réel, les déploiements étalés et les annulations instantanées dans les deux pipelines Git Flow et Trunk-Based. Il répond aux exigences d'Apple et Google tout en offrant une prise en charge pour les déploiements cloud et auto-hébergés [1].

Résumé et recommandations

Choisissez votre flux de travail en fonction du niveau de maturité de votre équipe et de votre CI/CD en utilisant le tableau ci-dessous :

Scénario Git Flow Trunk-Based
Taille de l'équipe 50+ développeurs Moins de 50 développeurs
Fréquence de publication Hebdomadaire ou mensuel Journalier ou plusieurs fois par jour
Tests & QA Cycles de test traditionnels Concentrez-vous sur les tests automatisés
Modèle de déploiement Multi-version, traditionnel Cloud-native, conteneurisé
Tolérance au risque Ensembles conservateurs, réglementés Progressifs, feedback rapides
  • Commencez par le développement en tronc dans les petites équipes, puis étendez-le aux groupes plus larges. Assurez-vous que votre pipeline CI/CD est entièrement automatisé avant de passer à l'étape suivante.
  • Maintenez des revues cohérentes code et utilisez les interrupteurs de fonction dans les deux workflows. Alignez les configurations de votre pipeline avec le flux que vous sélectionnez.

Certains équipes peuvent mélanger ces approches - en utilisant Git Flow pour les grandes mises à jour tout en exploitant le développement en tronc pour la livraison de fonctionnalités. Quelle que soit la voie que vous prenez, le succès dépend de l'intégration de CI/CD, de l'automatisation des tests et de garder l'équipe sur la même page.

Continuez de Git Flow vs Trunk-Based pour CI/CD

Si vous utilisez Git Flow vs Trunk-Based pour CI/CD pour planifier l'automatisation de CI/CD, connectez-le à Capgo CI/CD pour le flux de travail du produit dans Capgo CI/CD, Capgo Builds natifs pour le flux de travail du produit dans Capgo Builds natifs, Capgo Intégrations pour le flux de travail du produit dans Capgo Intégrations, Intégration CI/CD pour le détail d'implémentation dans Intégration CI/CD, et Actions d'intégration de GitHub pour les détails d'implémentation dans les actions d'intégration de GitHub

Mises à jour en temps réel pour les applications Capacitor

Lorsqu'un bug de la couche web est en ligne, expédiez la correction à travers Capgo au lieu de attendre des jours pour l'approbation de la boutique d'applications. Les utilisateurs reçoivent la mise à jour en arrière-plan tandis que les changements natifs restent dans la voie de revue normale.

Commencez maintenant

Dernières actualités de notre blog

Capgo vous donne les meilleures informations dont vous avez besoin pour créer une application mobile véritablement professionnelle.