Un de mes collègues m'a dit qu'il envisageait de faire en sorte que notre serveur d'initialisation rétablisse les validations ayant échoué lors de la compilation, de sorte que le HEAD
in master
est toujours stable (comme si la génération était au moins transmise).
S'agit-il d'une meilleure pratique ou cela risque-t-il de poser plus de problèmes que de laisser le master
fichier brisé jusqu'à ce que le développeur le corrige?
Ma pensée est que la révocation du commit rendra plus complexe la tâche de lecture du commit et du correctif (le développeur devra revenir sur le revert puis valider le correctif, ce qui encombrera également le git log
) et nous devrions simplement laisser le commit, puis commettre le réparer. Bien que je voie certains avantages à avoir la master
stabilité, cette inversion d'échec des commits ne me convainc pas.
edit: Peu importe qu'il s'agisse d' master
une autre branche de développement ou d'une autre branche de développement, mais la question reste la même: le système CI doit-il annuler une validation ayant échoué à la construction?
une autre (longueur) edit: Ok, nous utilisons git
d'une manière étrange. Nous pensons que le concept de branche va à l’encontre du véritable IC, car s’engager dans une branche vous isole des autres développeurs et de leurs modifications, et ajoute un temps supplémentaire pour la réintégration de votre branche et le traitement des conflits éventuels. Si tout le monde s'engage dans master
cette voie, les conflits sont réduits au minimum et chaque commit réussit tous les tests.
Bien sûr, cela vous oblige à ne pousser que de manière stable (ou vous cassez la construction) et à programmer plus soigneusement pour ne pas annuler la compatibilité avec les versions antérieures ni faire basculer les fonctionnalités lors de l'introduction de nouvelles fonctionnalités.
Il y a des compromis à faire CI tel ou tel moyen, mais c'est hors de la portée de la question (voir la question connexe à ce sujet). Si vous préférez, je peux reformuler la question: une petite équipe de développeurs travaillent ensemble dans une branche. Si un développeur valide quelque chose qui rompt la construction de cette branche, le système de CI doit-il annuler le commit ou non?
master
pour commencer. C'est à cela que servent les branches de développement et de fonctionnalités. Ces modifications vont ensuite dans quelque chose comme une branche d'intégration où vous pouvez tester si toutes les nouvelles fonctionnalités de plusieurs développeurs fonctionneront ensemble et ce, uniquement si cela est testé, peut aller en master. Ou du moins c'est un flux de travail possible.