W mojej firmie często nie wykonuje się żadnej kompilacji pośredniej, aby sprawdzić, w jaki sposób każda gałąź funkcji / poprawki błędów jest łączona w dev. Jest tylko codzienna kompilacja, która zawsze wywołuje wiele testów zakończonych niepowodzeniem i kompiluje błędy. Powiedziano mi, że nie ma sensu tworzyć kompilacji dla każdego scalenia dla ponad 1000 programistów.
Przeszukałem więc organizację CI w firmach, które mają tyle programistów lub więcej (Microsoft, Facebook) i nic nie znalazłem. Może znawcy mogą mi wtedy powiedzieć?
Odpowiedzi:
Zasadniczo jest to problem ze skalowaniem. Dzielisz swoją pracę na moduły, którymi mogą być różne projekty i / lub różne funkcjonalności twojego produktu.
Miałbyś zespoły zajmujące się zestawami tych modułów. Każda z tych drużyn miałaby skonfigurowane cykle CI dla swoich zakresów i dopiero po przejściu ich odpowiednich cykli kod byłby wypychany do repozytoriów głównych, gdzie prowadzony byłby główny cykl CI.
Główny cykl CI najprawdopodobniej będzie się różnić od cykli CI na poziomie zespołu pod następującymi względami:
To, co musisz zrobić z tym podejściem, to zapewnić automatyczne wypychanie z lokalnych repozytoriów do repozytorium centralnego po przejściu lokalnego cyklu CI, aby programiści nie spędzili ogromnej ilości czasu na wypchnięciu kodu do repozytoriów centralnych.
źródło
Oprócz tego, co powiedział @Vladimir_Stokic, w niektórych zespołach (mój ma ~ 150 programistów), budujemy kompilacje częściej niż co 24 godziny. Ilekroć nastąpi zatwierdzenie, uruchamiamy 5-minutowy zegar. Po upływie 5 minut wszystkie zatwierdzenia, które nastąpiły podczas tego 5-minutowego interwału, są łączone i budowane. Kompilacja jest zwykle kompilacją przyrostową. Mamy osobnego konstruktora, który uruchamia testy jednostkowe dla każdej kompilacji, która wystąpi. Po zakończeniu kompilacji, jeśli w trakcie kompilacji były jakieś zatwierdzenia (co zajmuje od 1 do 45 minut w zależności od tego, co się zmieniło), wszelkie oczekujące zmiany są budowane i tak dalej. Mamy również kompilację nocną (czystą, pełną), ale kompilacje, które mają miejsce przy każdym zatwierdzeniu (z grubsza), bardzo szybko mówią nam, czy testy się nie powiodły.
źródło