Tradycyjnie systemy CI wykonują monitorowanie poziomów jakości tylko w gałęzi integracji, wykonując weryfikacje jakości w bazie danych, w której zmiany zostały już zatwierdzone, obserwując regresje i wysyłając powiadomienia o interwencji człowieka.
Ale kiedy te regresje zostaną wykryte, oddział już ma problemy, przynajmniej od czasu rozpoczęcia odpowiedniej weryfikacji jakości i pozostanie w takim stanie (lub nawet gorzej!), Dopóki nie zostaną zidentyfikowani wszyscy sprawcy, popełnione naprawy i nowa weryfikacja jakości potwierdza, że poziom jakości oddziału został przywrócony. Oddział można uznać za zablokowany dla normalnego rozwoju przez cały ten czas.
Czy istnieje narzędzie CI, które może faktycznie zapobiec takim regresjom, które przeprowadzałyby weryfikacje jakości przed zatwierdzeniem i pozwalały zatwierdzać tylko wtedy, gdy baza kodów zaktualizowana o odpowiednie zatwierdzenia przechodziłaby również te weryfikacje jakości przed zatwierdzeniem, gwarantując w ten sposób minimum poziom jakości branży?
Aktualizacja: zakłada się, że odpowiednie zautomatyzowane weryfikacje jakości z odpowiednim zakresem umożliwiające wykrycie odpowiednich regresji są dostępne do wywołania przez narzędzie (narzędzia) CI.
źródło
Odpowiedzi:
O ile mi wiadomo, szukasz narzędzia, które odrzuci zatwierdzenia, które przerywają kompilację - narzędzie CI prawdopodobnie nie będzie w stanie zapobiec regresjom poprzez naprawienie kodu, ale może powstrzymać cię przed dodaniem złego kodu do repozytorium.
Atlassian ma kilka interesujących zastosowań haków Git :
Jeśli korzystasz z Git, haki są bardzo potężne (i są podobne haki dla SVN , Mercurial i innych systemów kontroli wersji), i może być przydatne, aby użyć ich do uruchomienia kontroli przed zatwierdzeniem.
Dokumentacja Gita zawiera stronę dotyczącą tworzenia haka do odrzucania wypychań, jeśli nie spełniają one określonych kryteriów, które można łatwo dostosować do tego przypadku użycia.
Jednak wiele osób twierdzi, że odrzucanie zatwierdzeń jest złym pomysłem dla
feature
gałęzi - po prostu marnujesz czas na walkę z systemem CI, gdy kompilacja z jakiegoś powodu się psuje, zamiast naprawiać błąd.W
master
oddziale sensowne może być odrzucenie zepsutych scaleń, ponieważ możesz chcieć mieć pewność, że zawsze się kompiluje. Dlafeature
branży, to będzie nieuchronnie złamać rzeczy, a ponieważ kod nie trafią do produkcji teraz , to ma większy sens tylko ostrzec, niż faktycznie odrzucić popełnić zupełnie.źródło
Żadne narzędzie nie może zagwarantować braku regresji - zależy to znacznie bardziej od twoich testów niż narzędzie je wykonujące. Możesz jednak pomóc w zapobieganiu przechwyceniu regresji, które zostaną przechwycone, w gałęzi integracji. Możesz to zrobić za pomocą przechwytywania poprzedzającego zatwierdzenie, ale często jest to łatwiejsze przy żądaniach ściągania (które, mam nadzieję, już używasz do recenzowania kodu równorzędnego).
Jeśli oddział jest aktualny w swoim segmencie wydobywczym (do którego łączy się PR), a jego testy zakończą się pomyślnie, to nadal przejdą po scaleniu; stan gałęzi docelowej po scaleniu będzie zgodny ze stanem gałęzi źródłowej przed scaleniem.
Zasadniczo nie jest szczególnie trudne (w zależności od użytych narzędzi) wskazanie zarówno, czy gałąź źródłowa w PR jest zgodna z celem, jak i czy ma pomyślną kompilację CI. Możesz użyć tego jako wymogu (według zasad i / lub wymuszonego w oprogramowaniu) do scalenia żądania ściągnięcia.
źródło
Prawdziwe narzędzia do ciągłej integracji (w przeciwieństwie do ciągłego testowania), takie jak Reitveld i Zuul, mogą pomóc, choć są one tak dobre, jak pisane testy i recenzje.
źródło
Użyj GitLAB, możesz ustawić w ustawieniach projektu, aby zezwalać na scalanie tylko po pomyślnym zakończeniu potoku, dzięki czemu możesz mieć naprawdę ciągłą integrację, łącząc to z dodawaniem kontroli jakości do listy zatwierdzeń scalania i za pomocą środowisk dynamicznych, możesz mieć gwarancję jakości zanim połączysz się z mistrzem.
źródło
ApartCI to system CI zaprojektowany dokładnie w celu zapobiegania regresji, gwarantując tym samym płaski lub podnoszący poziom jakości oddział. Nadal w wersji beta.
Organizuje scentralizowane weryfikacje przed zatwierdzeniem w taki sposób, aby zapewnić, że zmiana zostanie zatwierdzona dopiero po jej zweryfikowaniu, wraz ze wszystkimi innymi zmianami dokonanymi przed nią, w celu osiągnięcia lub przekroczenia najnowszego poziomu jakości oddziału.
Jest to kluczowa różnica w porównaniu z tradycyjnymi weryfikacjami przed zatwierdzeniem opartymi na programistach, często wykonywanymi równolegle, co pozostawia miejsce na regresje spowodowane przez zakłócające zmiany, które nigdy nie były wspólnie testowane.
Narzędzie zaprojektowano również w celu łatwego skalowania - jest w stanie utrzymać bardzo wysokie wskaźniki nadchodzących zmian kandydujących i wspierać setki / 1000 programistów pracujących w tej samej gałęzi integracji.
Oświadczenie: Jestem autorem narzędzia i założycielem firmy, która go oferuje. Przepraszamy za reklamę.
źródło