J'ai été confronté au problème de la mise à l'échelle du CI dans mon entreprise et, en même temps, j'ai essayé de déterminer l'approche à adopter en ce qui concerne le CI et les branches multiples. Il y a une question similaire sur stackoverflow, Branches de fonctionnalités multiples et intégration continue . J'en ai lancé une nouvelle parce que j'aimerais avoir plus de discussions et fournir une analyse de la question.
Jusqu'à présent, j'ai constaté qu'il y a deux approches principales que je peux adopter (ou peut-être d'autres ???).
- Plusieurs séries d'emplois (on parle ici de Jenkins/Hudson) par branche.
- Rédiger des outils pour gérer les travaux supplémentaires
- Créer/modifier/supprimer des emplois en masse
- Paramètres personnalisés pour chaque travail par branche (url SCM, duplications des dépôts de gestion des dépôts)
- Quelques exemples de personnes s'attaquant à ce problème avec des outils shell, des scripts ant et la CLI de Jenkins. Voir http://jenkins.361315.n4.nabble.com/Multiple-branches-best-practice-td2306578.html http://jenkins.361315.n4.nabble.com/Is-it-possible-to-handle-multiple-branches-where-some-jobs-should-run-on-each-one-without-duplicatin-td954729.html http://jenkins.361315.n4.nabble.com/Parallel-development-with-branches-td1013013.html Configurer ou créer un job hudson automatiquement
- Cela augmentera la charge de votre cluster CI
- Le cycle de retour d'information pour les développeurs est ralenti (si l'infrastructure ne peut pas gérer la nouvelle charge).
- Rédiger des outils pour gérer les travaux supplémentaires
- Plusieurs jeux de travaux pour 2 branches (dev & stable)
- Gérez les deux ensembles manuellement (si vous changez la conf d'un travail, assurez-vous de le faire dans l'autre branche).
- PITA mais au moins si peu à gérer
- D'autres branches supplémentaires ne recevront pas une suite de test complète avant d'être poussées vers dev.
- Des développeurs insatisfaits. Pourquoi un développeur devrait-il se soucier des problèmes de mise à l'échelle du CI ? Il a une demande simple, quand je fais une branche, j'aimerais tester mon code. Simple.
- Gérez les deux ensembles manuellement (si vous changez la conf d'un travail, assurez-vous de le faire dans l'autre branche).
Il semble donc que si je veux fournir aux développeurs un CI pour leurs propres branches personnalisées, j'ai besoin d'un outil spécial pour Jenkins (API ou shellscripts ou autre ?) et de gérer la mise à l'échelle. Ou je peux leur dire de fusionner plus souvent vers DEV et de vivre sans CI sur les branches personnalisées. Laquelle prendriez-vous ou y a-t-il d'autres options ?