Wikipedia podaje całkiem dobre podsumowania większości tych terminów. Oto moje zdanie na ich temat:
Automatyzacja kompilacji to automatyzacja budowy oprogramowania zamiast ręcznego wywoływania kompilatora. Można to osiągnąć za pomocą narzędzi takich jak np. Make lub Ant .
Automatyzacja wdrażania polega na pobieraniu wbudowanego oprogramowania i wdrażaniu go lub instalowaniu w systemie testowym lub produkcyjnym.
Ciągła integracja środki mające zautomatyzowanym Build przetworzyć oprogramowania stale jako programiści sprawdzić w kodzie i uruchomić testy jednostkowe w celu zapewnienia kod nadal działa. Na przykład co 15 do 30 minut serwer może się budzić, skanować VCS w poszukiwaniu nowych meldowań, a następnie aktualizować i budować projekt, jeśli dokonano jakichkolwiek zmian. Oprócz wykonywania kroków kompilacji jest to także doskonała okazja do przeprowadzenia automatycznych testów jednostkowych i kontroli jakości kodu .
Ciągłe dostarczanie to połączenie wszystkich poprzednich koncepcji, w których kompilacje oprogramowania są również wdrażane w systemie testowym, opcjonalnie z przeprowadzonymi testami i generowanymi raportami.
Przynajmniej musisz mieć automatyzację kompilacji, tj. Pewnego rodzaju skrypt kompilacji. To pozwala kliknąć jeden przycisk lub wydać jedno polecenie, aby zbudować projekt. Zaletą tego jest zmniejszenie liczby błędów wynikających z ręcznego uruchamiania kroków. Złożone środowiska kompilacji mogą obejmować generowanie kodu (pomyśl DAO z konfiguracji, kod interfejsu, taki jak JAXB ), kompilowanie kodu, pakowanie go, dostosowywanie metadanych itp. Mając wiele rzeczy do zrobienia, potrzebujesz listy kontrolnej: dlaczego nie stworzyć listy kontrolnej? swój skrypt kompilacji i użyć narzędzia do jego uruchomienia? Redukuje błędy i zapewnia spójność.
Następny jest CI: to naprawdę dobrze mieć, ale nie jest to absolutnie wymagane. Pomaga wcześnie identyfikować problemy z kompilacją. Jeśli masz wielu programistów sprawdzających kod w ciągu dnia i być może nie synchronizujących stale własnych obszarów roboczych, istnieje ryzyko, że ich zmiany będą ze sobą kolidować. Mam na myśli w szczególności błędy kodu statycznego, a nie konflikty kontroli wersji. Serwer kompilacji CI zmniejszy to ryzyko.
Wreszcie mamy kroki wdrażania. Chodzi tu o oszczędność czasu i ograniczenie błędów związanych z ręcznym wdrażaniem oprogramowania. Podobnie jak w przypadku automatyzacji kompilacji, istnieje sto sposobów na zepsucie wdrożenia oprogramowania. Osobiście spóźniłem się w biurze, aby naprawić problemy z ręcznym wdrażaniem przy wielu okazjach, gdy potrzebujemy sprawnego systemu dla klientów, którzy jutro przyjdą na miejsce. Automatyzacja wielu systemów wiąże się z większym ryzykiem: zamiast jednego systemu, który może ulec awarii lub mieć dziwne błędy, mamy teraz wielesystemy, które mogą pójść nie tak. Ryzyko to jest jednak znacznie niższe niż w przypadku, gdy ktoś pominął krok na liście kontrolnej lub wydał niewłaściwe polecenie i zepsuł wdrożenie. Jeśli masz szczęście, możesz po prostu przywrócić kopię zapasową bazy danych i zacząć od nowa, jeśli masz pecha, błąd może spowodować nieprawidłowe działanie systemu. Czy to wada oprogramowania? Czy technik nie ustawił poprawnie konfiguracji? Zdiagnozowanie tego wymaga czasu, czasu, którego możesz nie mieć, i czasu, którego nie musisz poświęcać na automatyzację procesu.