Ciągła integracja jako termin odnosi się do dwóch różnych pomysłów.
Pierwszym z nich jest przepływ pracy: zamiast wszystkich w zespole pracującym nad własnym oddziałem, a następnie po kilku tygodniach programowania, spróbuj połączyć swoje zmiany w linię główną, aby zmiany były integrowane (prawie) w sposób ciągły. Pozwala to na wczesne wykrycie problemów i pozwala uniknąć niezgodnych zmian. Wymaga to jednak od nas łatwego sprawdzenia, czy zmiana „działa”.
Tu pojawia się drugi pomysł, który okazał się znacznie bardziej popularny. Serwer CI to czyste środowisko, w którym zmiany są testowane tak szybko, jak to możliwe. Czyste środowisko jest konieczne, aby kompilacja była odtwarzalna. Jeśli to działa raz, zawsze powinno działać. Pozwala to uniknąć problemów „ale działało na moim komputerze”. W szczególności serwer CI jest cenny, gdy oprogramowanie działa na różnych systemach lub w różnych konfiguracjach i musisz mieć pewność, że wszystko działa.
Brak kroku kompilacji jest nieistotny. Jednak CI ma sens tylko wtedy, gdy masz pakiet testowy. Ten zestaw testów musi być automatyczny i nie może mieć żadnych awarii. Jeśli testy się nie powiodą, odpowiedni programista powinien otrzymać powiadomienie, aby naprawić problem, który wprowadzili („przerywanie kompilacji”, nawet jeśli kompilacja nie istnieje).
Okazuje się, że taki serwer jest cenny nie tylko do testowania. W rzeczywistości większość oprogramowania CI jest bardzo kiepska w przeprowadzaniu testów w różnych konfiguracjach, ale jest dobra w zarządzaniu wszelkiego rodzaju zadaniami. Np. Oprócz „ciągłych” testów jednostkowych może istnieć pełny test jako kompilacja nocna. Oprogramowanie może być testowane z wieloma wersjami Pythona, różnymi wersjami bibliotek. Witrynę internetową można przetestować pod kątem martwych linków. Możemy uruchomić analizę statyczną, sprawdzanie stylu, narzędzia pokrycia testowego itp. Na kodzie. Dokumentacja może zostać wygenerowana. Po przejściu wszystkich pakietów testowych można rozpocząć proces pakowania, abyś był gotowy do wydania oprogramowania. Jest to przydatne w zwinnym ustawieniu, w którym zawsze chcesz mieć produkt do wdrożenia (i demonstracji). Wraz z rozwojem aplikacji internetowych pojawiła się także idea ciągłego wdrażania: Jeśli wszystkie testy zakończą się pomyślnie, możemy automatycznie wprowadzić zmiany do produkcji. Oczywiście wymaga to, abyś był naprawdę pewny swojego zestawu testów (jeśli nie, masz większe problemy).