Si des personnes font de l'intégration continue en utilisant git comme SCM, j'aimerais avoir votre avis sur ce sujet. Je parle ici de CI dans le but d'aller vers du continuous delivery (être en capacité de livrer quand on veut) puis du continuous deployment (livrer à chaque commit), il ne s'agit pas d'avoir un Jenkins parce que c'est à la mode.
Le principe de l'intégration continue, c'est de merger le travail des développeurs le plus souvent possible, et d'exécuter tests et build sur un serveur d'intégration afin de donner de la visibilité sur l'état du code source et la capacité à livrer asap.
Avec git, de nombreux worfklow sont possibles. Un des points critiques du workflow, c'est ce que j'appellerais la merging strategy : Comment on merge, quand et pourquoi.
Il existe grosse modo 2 merging strategies : la synchronization point strategy, et la continuous integration strategy.
La synchronization point strategy est celle défendue par Linus Torvalds dans un mail écrit en 2009 (pas trop récent mais pas si vieux que ça). L'idée générale est que la principale valeur ajoutée de git c'est sa gestion de l'historique et qu'il est donc primordial de le conserver propre et logique. On ne merge donc pas à tout va, on prend son temps, on ne merge que quand on a terminé proprement sa feature, on demande avant de merger. Ça permet également de préparer beaucoup plus facilement le scope d'une livraison.
La CI strategy c'est quasiment l'inverse. Elle est prônée par Martin Fowler dans la documentation de gitlab. On merge le plus souvent possible, plusieurs fois par jour si possible. Cette stratégie a pour défaut de produire un historique dégueulasse. Elle a également comme grave défaut d'obliger l'implémentation du feature flipping, chose qui peut être très complexe à mettre en oeuvre, en particulier dans les ihm.
Cette strategy a par contre pour avantage de simplifier les merge puisqu'on les fait très souvent. Elle se dirige aussi plus naturellement vers du continuous delivery et surtout vers le continuous deployment, c'est à dire les dernières pratiques en la matière.
Comment vous vous organisez de votre côté ?
Pour ma part je suis vraiment embêté. D'un côté je trouve la SPS plus secure et plus facile à gérer, mais elle se pose sur un cycle beaucoup plus long, et je vois mal comment faire du continuous deployment (cible ultime) avec ...
Partager