Nous effectuons une intégration et une livraison continues depuis un certain temps avec les validations de Subversion lorsque les pipelines se déclenchent. Récemment, nous avons commencé à utiliser git dans certains projets avec git-flow et nous essayons de décider laquelle des branches de git-flow devrions-nous utiliser pour déclencher l'intégration continue et les pipelines de livraison continue.
Voici deux approches:
1. Utilisez la branche develop
Problème: avec git-flow, nous sommes censés déployer la branche release (ou master) en production, nous devrons donc construire deux pipelines différents, un pour l'intégration continue (développement de la branche) et un pour la livraison continue (master de la branche). Cela pourrait introduire des bugs en production car la version en production ne sera pas la même que celle des autres environnements (intégration, test, staging).
2. Utilisez la branche principale :
Problème: De cette façon, nous n'aurions pas une intégration vraiment continue, car les modifications de ces branches ne sont pas poussées très fréquemment.
Quelle est la branche droite à utiliser dans les pipelines?
Git-flow et intégration continue sont, par définition, incompatibles. Les branches sont un mécanisme pour retarder l'intégration: lorsque vous vous engagez sur une branche autre que master (ou trunk, si vous venez de Subversion), vous évitez une intégration continue. Faire une intégration continue est simple, mais pas facile.
La vérité se situe entre les deux. Si vous souhaitez adopter git-flow dans un pipeline de CD strict, vous devez utiliser la version-branche pour votre CI:
L'idée de base vient de la diapositive de John Ferguson Smart sur CI/CD dans Java Maven projects (BDD in Action, Jenkins Definite Guide).
À mon avis, si vous souhaitez appliquer git-flow en livraison continue, vous devez avoir deux pipelines différents, comme vous l'avez dit dans votre première approche.
Je suggère cette approche:
1. Développer une branche
2. Branche principale