Le workflow Gitflow est un modèle de gestion des branches efficace pour organiser le développement logiciel. Il est adapté aux projets d'envergure. Le workflow Gitflow repose sur la séparation des environnements de développement, de production et des fonctionnalités. Voici un guide pratique pour comprendre et appliquer Gitflow avec quelques bonnes pratiques.
Attention : Le workflow Gitflow, bien qu'efficace pour de nombreux projets, n'est pas toujours adapté à toutes les équipes ni à tous les types de projets. Assurez-vous qu'il répond bien aux besoins spécifiques du projet avant de l'adopter pleinement. Une liste d'autres workflows gagnants en popularité est fournie à la fin de l'article.
Il est recommandé d'avoir des bases dans l'utilisation de Git. Un mémo Git est disponible ici.
Le workflow Gitflow utilise différentes branches pour structurer le développement :
* : Ces branches sont temporaires. Une fois le code mergé dans la branche de développement (develop) ou de production (master), elles doivent être supprimées pour ne pas polluer inutilement le dépôt Git.
La branche Master, aussi appelée Main, représente la version stable et prête à être déployée en production. Cette branche contient uniquement le code validé, testé, et déployable, garantissant ainsi que tout ce qui s'y trouve peut être utilisé directement par les utilisateurs finaux.
La branche develop est créée à partir du master. Cette branche regroupe toutes les nouvelles fonctionnalités en cours et constitue le terrain d'intégration continue.
git checkout main
git checkout -b develop
Note : Cette branche de développement n'est pas encore prête à être déployée en production, mais son contenu est considéré comme étant testé par les développeurs.
Chaque nouvelle fonctionnalité se développe dans une branche feature, dérivée de develop. Imaginons que l'équipe travaille sur l'ajout d'un panier d'achat :
git checkout develop # Positionnement dans la branche develop
git checkout -b feature/add-basket # Création de la branche de fonctionnalité
git push --set-upstream origin feature/add-basket # Envoyer la branche dans le dépôt Git distant
# Ajout de la fonctionnalité et commit
git add .
git commit -m "Ajout du panier d'achat"
git push
Une fois la fonctionnalité développée, il est recommandé de faire un rebase par rapport à la branche develop pour résoudre les conflits potentiels avant de pousser les modifications :
git rebase develop
git push --force-with-lease
Enfin, il est nécessaire de merger le code dans la branche develop. Il est recommandé de faire relire le code par un tiers avant tout merge via une "Merge Request" (MR) ou une "Pull Request" (PR).
Quand une série de fonctionnalités est prête à être livrée, on crée une branche release à partir de develop :
git checkout develop
git checkout -b release/1.0.0
git push --set-upstream origin release/1.0.0 # Envoyer la branche dans le dépôt Git distant
On réalise les tests d'intégration et de non régression pour s'assurer que la solution fonctionne parfaitement.
Une fois les tests terminés et les dernières corrections de dernière minute appliquées dans cette branche, la branche release est fusionnée dans le master (PR / MR ou manuellement) et un tag de version doit être créé :
git checkout master
git merge release/1.0.0
# Création du tag
git tag -a v1.0.0 -m "Version 1.0.0"
git push origin v1.0.0
Attention : Ne pas oublier de fusionner dans la branche develop les derniers correctifs effectués sur la branche de release :
git checkout develop
git merge release/1.0.0
Si un bug critique survient en production, on créé une branche hotfix depuis le master. Cette branche permet de corriger rapidement un bug sans passer par la branche de développement (qui n'est pas prête à être envoyée en production) et une branche de release (qui peut prendre du temps à être testée avant d'être envoyé en production) :
git checkout master
git checkout -b hotfix/1.0.1
git push --set-upstream origin hotfix/1.0.1 # Envoyer la branche dans le dépôt Git distant
# Correction du bug et commit
git add .
git commit -m "Correction critique de bug"
git push
Une fois testé, la branche hotfix est ensuite fusionnée dans la branche master avec un nouveau tag de version :
# Merge du correctif dans la branche master
git checkout master
git merge hotfix/1.0.1
# Création du tag
git tag -a v1.0.1 -m "Version 1.0.1"
git push origin main --tags
Attention : Ne pas oublier de fusionner dans la branche develop le correctif :
git checkout develop
git merge hotfix/1.0.1
Gitflow est populaire pour les projets de développement logiciel collaboratif, mais comme tout modèle, il présente des points forts et des limitations à prendre en compte.
Avantages :
Inconvénients :
Gitflow est un modèle robuste, mais d'autres workflows existent :
Pour en savoir plus, explorez les ressources :
Le workflow Gitflow est un allié puissant pour structurer le développement de projets logiciels en séparant efficacement les environnements de développement, de test et de production. Son modèle de branches permet de gérer facilement les nouvelles fonctionnalités, les préparations de version, et les corrections de bugs, tout en maintenant un historique de code clair et lisible. Cependant, le workflow gitflow n'est pas sans inconvénients. Suivant le projet, un autre workflow peut être plus adapté.
Note : Contenu très partiellement généré avec de l'IA mais relu et beaucoup complété par un humain :).
LauLem.com - Conditions Générales d'Utilisation - Informations Légales - Charte relative aux cookies - Charte sur la protection des données personnelles - A propos