Co to jest Jenkins? Dlaczego warto korzystać z narzędzia ciągłej integracji (CI)?
Co to jest Jenkins?
Jenkins to serwer ciągłej integracji typu open source napisany w Java do koordynowania łańcucha działań w celu osiągnięcia procesu Ciągłej Integracji w sposób zautomatyzowany. Jenkins wspiera pełny cykl życia oprogramowania, począwszy od budowania, testowania, dokumentowania oprogramowania, wdrażania i innych etapów cyklu życia oprogramowania.
Jenkins to szeroko stosowana aplikacja na całym świecie, która ma około 300 tys. instalacji i rośnie z dnia na dzień. Korzystając z Jenkinsa, firmy zajmujące się oprogramowaniem mogą przyspieszyć proces tworzenia oprogramowania, ponieważ Jenkins może automatyzować kompilację i testowanie w szybkim tempie.
Jest to aplikacja serwerowa i wymaga serwera WWW, takiego jak Apache Tomcat. Powodem, dla którego oprogramowanie Jenkins stało się tak popularne, jest monitorowanie powtarzających się zadań, które pojawiają się podczas opracowywania projektu. Na przykład, jeśli Twój zespół opracowuje projekt, Jenkins będzie stale testować kompilacje projektu i pokazywać błędy na wczesnych etapach rozwoju.
Czym jest ciągła integracja?
Ciągła integracja to proces wielokrotnego integrowania zmian w kodzie dokonanych przez wielu programistów w jednym projekcie. Oprogramowanie jest testowane natychmiast po zatwierdzeniu kodu. Przy każdym zatwierdzeniu kodu kod jest budowany i testowany. Jeśli test zakończy się pomyślnie, kompilacja zostanie przetestowana pod kątem wdrożenia. Jeśli wdrożenie zakończy się pomyślnie, kod zostanie przekazany do środowiska produkcyjnego.
To zatwierdzanie, budowanie, testowanie i wdrażanie jest procesem ciągłym i stąd nazwa ciągła integracja/wdrożenie.
Jak działa Jenkins?
Jenkins jest aplikacją serwerową i wymaga serwera WWW, takiego jak Apache Tomcat, do działania na różnych platformach, np Windows, Linux, macOS, Unix itp. Aby używać Jenkinsa, musisz utworzyć potoki, które stanowią serię kroków, które wykona serwer Jenkins. Jenkins Continuous Integration Pipeline to potężne narzędzie składające się z zestawu narzędzi przeznaczonych do gospodarz, monitor, skompilować i test kodu lub zmian w kodzie, takich jak:
- Serwer ciągłej integracji (Jenkins, Bamboo, CruiseControl, TeamCity, i inni)
- Narzędzie kontroli źródła (np. CVS, SVN, GIT, Mercurial, Perforce, ClearCase i inne)
- Narzędzie do budowania (Make, ANT, Maven, Ivy, Gradle, i inni)
- Ramy testów automatycznych (Selenium, Appium, TestComplete, UFT i inne)
Historia Jenkina
- Kohsuke Kawaguchi, a Java programista pracujący w SUN Microsystems był zmęczony budowaniem kodu i powtarzalnym naprawianiem błędów. W 2004 roku stworzył serwer automatyzacji o nazwie Hudson, który automatyzuje zadania kompilacji i testowania.
- W 2011, Oracle właściciel Sun Microsystems miał spór ze społecznością open source Hudson, więc oddzielił Hudson i zmienił nazwę na Jenkins.
- Zarówno Hudson, jak i Jenkins nadal działali niezależnie. Jednak w krótkim czasie Jenkins pozyskał wiele projektów i współpracowników, podczas gdy Hudson pozostał z zaledwie 32 projektami. Z czasem Jenkins stał się bardziej popularny, a Hudson nie jest już utrzymywany.
Dlaczego warto korzystać z ciągłej integracji z Jenkinsem?
Niektórzy mogą uważać, że staromodny sposób tworzenia oprogramowania jest lepszy. Zrozumiemy zalety CI z Jenkinsem na poniższym przykładzie
Wyobraźmy sobie, że około 10 programistów pracuje nad aplikacją udostępnione repozytorium. Niektórzy programiści wykonują swoje zadanie w 25 dni, podczas gdy innym zajmuje to 30 dni.
Przed Jenkinsem | Po Jenkinsie |
---|---|
Gdy wszyscy programiści wykonali przydzielone im zadania kodowania, zwykli zatwierdzać swój kod w tym samym czasie. Later, Kompilacja została przetestowana i wdrożona.
Zbudowano zatwierdzenie kodu, a cykle testowe były bardzo rzadkie, a pojedyncza kompilacja była wykonywana po wielu dniach. |
Kod jest budowany i testowany natychmiast po zatwierdzeniu kodu przez programistę. Jenkin będzie budować i testować kod wiele razy w ciągu dnia
Jeśli kompilacja zakończy się pomyślnie, Jenkins wdroży źródło na serwerze testowym i powiadomi zespół wdrożeniowy. Jeśli kompilacja się nie powiedzie, Jenkins powiadomi zespół programistów o błędach. |
Ponieważ kod został zbudowany w całości na raz, niektórzy programiści musieli poczekać, aż inni programiści zakończą kodowanie, aby sprawdzić swoją kompilację | Kod jest budowany natychmiast po zatwierdzeniu któregokolwiek z Deweloperów. |
Wyizolowanie, wykrycie i naprawienie błędów w przypadku wielu zatwierdzeń nie jest łatwym zadaniem. | Ponieważ kod jest budowany po każdym zatwierdzeniu pojedynczego programisty, łatwo jest wykryć, czyj kod spowodował niepowodzenie kompilacji |
Kompilacja kodu i proces testowy są całkowicie ręczne, więc ryzyko niepowodzenia jest duże. | Zautomatyzowany proces kompilacji i testowania oszczędza czas i redukuje defekty. |
Kod zostaje wdrożony po naprawieniu wszystkich błędów i przetestowaniu ich. | Kod jest wdrażany po każdym pomyślnym skompilowaniu i teście. |
Cykl rozwoju jest powolny | Cykl rozwoju jest szybki. Nowe funkcje są łatwiej dostępne dla użytkowników. Zwiększa zyski. |
Studium przypadku ciągłej integracji ze świata rzeczywistego
Jestem pewien, że wszyscy wiecie o starym telefonie Nokia. Nokia wdrażała procedurę zwaną kompilacją nocną. Po wielu zatwierdzeniach od różnych programistów w ciągu dnia, oprogramowanie budowane było każdej nocy. Ponieważ oprogramowanie było budowane tylko raz dziennie, izolowanie, identyfikacja i naprawianie błędów w dużej bazie kodu jest ogromnym wyzwaniem.
Laterprzyjęli podejście Ciągłej Integracji. Oprogramowanie zostało zbudowane i przetestowane zaraz po zatwierdzeniu kodu przez programistę. W przypadku wykrycia jakiegokolwiek błędu odpowiedni programista może szybko naprawić usterkę.
Wtyczki Jenkinsa
Domyślnie Jenkins ma ograniczony zestaw funkcji. Jeśli chcesz zintegrować instalację Jenkinsa z narzędziami kontroli wersji, takimi jak Git, musisz zainstalować wtyczki powiązane z Git. W rzeczywistości, w przypadku integracji z narzędziami takimi jak Maven, Amazon EC2, musisz zainstalować odpowiednie wtyczki w swoim Jenkinsie.
Zalety korzystania z Jenkinsa
- Jenkins jest zarządzany przez społeczność, która jest bardzo otwarta. Co miesiąc odbywają się publiczne spotkania i zbierają opinie od społeczeństwa na temat rozwoju projektu Jenkins.
- Jak dotąd zamknięto około 280 zgłoszeń, a projekt publikuje stabilną wersję co trzy miesiące.
- Wraz z rozwojem technologii rozwija się Jenkins. Jak dotąd Jenkins ma około 320 wtyczek opublikowanych w swojej bazie danych wtyczek. Dzięki wtyczkom Jenkins staje się jeszcze potężniejszy i bogatszy w funkcje.
- Narzędzie Jenkins obsługuje również architekturę opartą na chmurze, co umożliwia wdrażanie Jenkinsa na platformach opartych na chmurze.
- Powodem, dla którego Jenkins stał się popularny, jest to, że został stworzony przez programistę dla programistów.
Wady korzystania z Jenkinsa
Chociaż Jenkins jest bardzo potężnym narzędziem, ma swoje wady.
- Jego interfejs jest przestarzały i niezbyt przyjazny dla użytkownika w porównaniu z obecnymi trendami w interfejsie użytkownika.
- Chociaż Jenkins jest uwielbiany przez wielu programistów, jego utrzymanie nie jest takie łatwe, ponieważ Jenkins działa na serwerze i jako administrator serwera wymaga pewnych umiejętności w celu monitorowania jego aktywności.
- Jednym z powodów, dla których wiele osób nie wdraża Jenkinsa, są trudności w instalacji i konfiguracji Jenkinsa.
- Ciągłe integracje regularnie się psują z powodu drobnych zmian ustawień. Ciągła integracja zostanie wstrzymana i dlatego wymaga uwagi programisty.
Podsumowanie
- W przypadku ciągłej integracji po zatwierdzeniu kodu oprogramowanie jest natychmiast budowane i testowane
- Jenkins używany do koordynowania łańcucha działań w celu ciągłej integracji w projekcie oprogramowania
- Przed Jenkinsem, gdy wszyscy programiści kończyli przydzielone im zadania związane z kodowaniem, zwykli zatwierdzać swój kod w tym samym czasie. Later, Kompilacja została przetestowana i wdrożona.
- Po Jenkins kod jest budowany i testowany, gdy tylko programista zatwierdzi kod. Jenkin będzie budować i testować kod wiele razy w ciągu dnia
- Domyślnie Jenkins ma ograniczony zestaw funkcji. Jeśli chcesz zintegrować instalację Jenkinsa z narzędziami kontroli wersji, takimi jak Git, musisz zainstalować wtyczki powiązane z Git. Sprawdź także Najlepsze alternatywne narzędzia Jenkins
- Największą zaletą Jenkinsa jest to, że jest on zarządzany przez społeczność, która organizuje spotkania publiczne i zbiera opinie od społeczeństwa na temat rozwoju projektów Jenkinsa
- Największą wadą Jenkinsa jest to, że jego interfejs jest przestarzały i niezbyt przyjazny dla użytkownika w porównaniu z obecnymi trendami w interfejsie użytkownika. Jeśli rozważasz inne opcje, które mogą zapewnić bardziej nowoczesny interfejs użytkownika, możesz zapoznać się z niektórymi z nich najlepsze narzędzia do ciągłej integracji dostępny.