Miałem do czynienia z problemem skalowania CI w mojej firmie i jednocześnie próbując dowiedzieć się, jakie podejście przyjąć, jeśli chodzi o CI i wiele oddziałów. Podobne pytanie pojawia się przy przepełnieniu stosu, wielu gałęziach funkcji i ciągłej integracji . Zacząłem nowy, ponieważ chciałbym uzyskać więcej dyskusji i przedstawić analizę pytania.
Do tej pory odkryłem, że są 2 główne podejścia, które mogę zastosować (a może inne ???).
- Wiele zestawów zadań (mowa tutaj o Jenkins / Hudson) na oddział
- Napisz narzędzia do zarządzania dodatkowymi zadaniami
- Zbiorcze tworzenie / modyfikowanie / usuwanie ofert pracy
- Ustawienia niestandardowe dla każdego zadania na oddział (adres URL SCM, powielanie repozytoriów zarządzania dep)
- Kilka przykładów osób rozwiązujących ten problem za pomocą narzędzi powłoki, skryptów Ant i interfejsu wiersza polecenia Jenkinsa. Widzieć:
- 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
- Skonfiguruj lub utwórz automatycznie zadanie hudson
- Spowoduje większe obciążenie klastra CI
- Cykl sprzężenia zwrotnego dla programistów zwalnia (jeśli infrastruktura nie może obsłużyć nowego obciążenia)
- Napisz narzędzia do zarządzania dodatkowymi zadaniami
- Wiele zestawów zadań na 2 gałęzie (deweloperskie i stabilne)
- Zarządzaj dwoma zestawami ręcznie (jeśli zmienisz konfigurację zadania, pamiętaj o zmianie w drugiej gałęzi)
- PITA, ale przynajmniej tak mało do zarządzania
- Inne dodatkowe gałęzie nie otrzymają pełnego zestawu testów, zanim zostaną zepchnięte do programowania
- Niezadowoleni twórcy. Dlaczego deweloper miałby przejmować się problemami ze skalowaniem CI. Ma prostą prośbę, kiedy oddziału chcę przetestować mój kod. Prosty.
- Zarządzaj dwoma zestawami ręcznie (jeśli zmienisz konfigurację zadania, pamiętaj o zmianie w drugiej gałęzi)
Wygląda więc na to, że jeśli chcę zapewnić programistom CI dla ich własnych niestandardowych gałęzi, potrzebuję specjalnego narzędzia dla Jenkinsa (API lub skryptów powłoki czy coś takiego?) I obsługiwać skalowanie. Albo mogę im powiedzieć, aby częściej łączyli się z DEV i żyli bez CI w niestandardowych gałęziach. Którą byś wybrał, czy są inne opcje?