Co to jest Jenkins?
Jenkins jest serwerem Continuous Integration typu open source, który może organizować łańcuch działań, które pomagają osiągnąć proces ciągłej integracji (i nie tylko) w sposób zautomatyzowany.
Jenkins jest darmowy i jest w całości napisany w Javie. Jenkins to szeroko stosowana aplikacja na całym świecie, która ma około 300 000 instalacji i rośnie z dnia na dzień.
Jest to aplikacja oparta na serwerze i wymaga serwera WWW, takiego jak Apache Tomcat. Powodem, dla którego Jenkins stał się tak popularny, 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.
Korzystając z Jenkinsa, firmy programistyczne mogą przyspieszyć proces tworzenia oprogramowania, ponieważ Jenkins może zautomatyzować tworzenie i testowanie w szybkim tempie. Jenkins obsługuje pełny cykl życia oprogramowania, począwszy od tworzenia, testowania, dokumentowania oprogramowania, wdrażania i innych etapów cyklu życia oprogramowania.
W tym samouczku dowiesz się
- Co to jest Jenkins?
- Co to jest ciągła integracja?
- Historia Jenkin
- Dlaczego warto korzystać z ciągłej integracji z Jenkins?
- Prawdziwe studium przypadku ciągłej integracji
- Zalety korzystania z Jenkinsa
- Wady korzystania z Jenkinsa
Co to jest ciągła integracja?
W Continuous Integration po zatwierdzeniu kodu oprogramowanie jest budowane i testowane natychmiast. W dużym projekcie, w którym jest wielu programistów, zatwierdzenia są wykonywane wiele razy w ciągu dnia. Z każdym zatwierdzeniem 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 jest przekazywany do produkcji. To zatwierdzanie, kompilowanie, testowanie i wdrażanie jest procesem ciągłym, stąd nazwa ciągła integracja / wdrażanie.
Potok ciągłej integracji to potężne narzędzie, które składa się z zestawu narzędzi zaprojektowanych do hostowania , monitorowania , kompilowania i testowania kodu lub zmian w kodzie, takich jak:
- Serwer ciągłej integracji (Jenkins, Bamboo, CruiseControl, TeamCity i inne)
- Narzędzie kontroli źródła (np. CVS, SVN, GIT, Mercurial, Perforce, ClearCase i inne)
- Narzędzie do tworzenia (Make, ANT, Maven, Ivy, Gradle i inne)
- Framework do testowania automatyzacji (Selenium, Appium, TestComplete, UFT i inne)
Historia Jenkin
- Kohsuke Kawaguchi, programista Java, pracujący w SUN Microsystems, miał dość budowania kodu i powtarzalnego naprawiania błędów. W 2004 roku stworzył serwer automatyzacji o nazwie Hudson, który automatyzuje zadania kompilacji i testowania.
- W 2011 roku Oracle, który był właścicielem Sun Microsystems, pokłócił się ze społecznością Hudson open source, więc rozwidliła Hudson i przemianowała ją na Jenkins.
- Zarówno Hudson, jak i Jenkins nadal działali niezależnie. Ale w krótkim czasie Jenkins pozyskał wiele projektów i współpracowników, podczas gdy Hudson pozostał tylko z 32 projektami. Z czasem Jenkins stał się bardziej popularny, a Hudson nie jest już utrzymywany.
Dlaczego warto korzystać z ciągłej integracji z Jenkins?
Niektórzy mogą pomyśleć, że staromodny sposób tworzenia oprogramowania jest lepszym sposobem. Zrozummy zalety CI z Jenkinsem na poniższym przykładzie
Wyobraźmy sobie, że jest około 10 programistów, którzy pracują nad wspólnym repozytorium. Niektórzy deweloperzy wykonują swoje zadanie w 25 dni, podczas gdy inni zajmują 30 dni.
Przed Jenkinsem | Po Jenkinsie |
---|---|
Gdy wszyscy programiści ukończyli przypisane im zadania kodowania, używali swojego kodu w tym samym czasie. Później Build jest testowany i wdrażany. Utworzono zatwierdzenie kodu, a cykl testów był bardzo rzadki, a pojedyncza kompilacja została wykonana po wielu dniach. | Kod jest budowany i testowany, gdy tylko programista zatwierdzi kod. Jenkin będzie budować i testować kod wiele razy w ciągu dnia. Jeśli kompilacja się powiedzie, 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 od razu, niektórzy programiści musieli poczekać, aż inni programiści zakończą kodowanie, aby sprawdzić swoją kompilację | Kod jest budowany natychmiast po zatwierdzeniu dowolnego z deweloperów. |
Wyodrębnienie, wykrycie i naprawienie błędów dla wielu zatwierdzeń nie jest łatwym zadaniem. | Ponieważ kod jest budowany po każdym zatwierdzeniu przez jednego programistę, łatwo jest wykryć, czyj kod spowodował awarię kompilacji |
Tworzenie kodu i proces testowania są całkowicie ręczne, więc istnieje wiele szans na niepowodzenie. | Zautomatyzowany proces kompilacji i testowania oszczędza czas i zmniejsza liczbę defektów. |
Kod jest wdrażany po naprawieniu i przetestowaniu wszystkich błędów. | Kod jest wdrażany po każdej pomyślnej kompilacji i teście. |
Cykl rozwoju jest powolny | Cykl rozwoju jest szybki. Nowe funkcje są łatwiej dostępne dla użytkowników. Zwiększa zyski. |
Prawdziwe studium przypadku ciągłej integracji
Jestem pewien, że wszyscy znacie stary telefon Nokia. Nokia zastosowała procedurę zwaną nightly build. Po wielu zatwierdzeniach dokonanych przez różnych programistów w ciągu dnia, oprogramowanie tworzyło się każdej nocy. Ponieważ oprogramowanie było budowane tylko raz dziennie, izolowanie, identyfikowanie i naprawianie błędów w dużej bazie kodu jest ogromnym problemem.
Później przyjęli podejście Continuous Integration. Oprogramowanie zostało zbudowane i przetestowane, gdy tylko programista zatwierdzi kod. W przypadku wykrycia błędu odpowiedni programista może szybko naprawić usterkę.
Wtyczki Jenkins
Domyślnie Jenkins ma ograniczony zestaw funkcji. Jeśli chcesz zintegrować swoją instalację Jenkinsa z narzędziami kontroli wersji, takimi jak Git, musisz zainstalować wtyczki związane z Git. W rzeczywistości, aby zintegrować się 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. Każdego miesiąca odbywają publiczne spotkania i przyjmują od opinii publicznej informacje na temat rozwoju projektu Jenkins.
- Jak dotąd około 280 biletów jest zamkniętych, a projekt publikuje stabilną wersję co trzy miesiące.
- Wraz z rozwojem technologii rośnie też 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.
- Jenkins obsługuje również architekturę opartą na chmurze, dzięki czemu można wdrażać Jenkins na platformach chmurowych.
- 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 nie jest przyjazny dla użytkownika w porównaniu z obecnymi trendami w interfejsie użytkownika.
- Chociaż Jenkins jest kochany przez wielu programistów, nie jest łatwo go utrzymać, ponieważ Jenkins działa na serwerze i wymaga pewnych umiejętności jako administrator serwera, aby monitorować jego aktywność.
- Jednym z powodów, dla których wiele osób nie implementuje Jenkinsa, jest trudność w instalacji i konfiguracji Jenkinsa.
- Ciągłe integracje regularnie przerywają się z powodu niewielkich zmian ustawień. Ciągła integracja zostanie wstrzymana i dlatego wymaga uwagi programisty.
Wniosek:
- W Continuous Integration, po zatwierdzeniu kodu, oprogramowanie jest budowane i testowane natychmiast
- Jenkins to serwer ciągłej integracji typu open source, który może organizować łańcuch działań
- Przed Jenkinsem, kiedy wszyscy programiści zakończyli przydzielone im zadania kodowania, zwykli zatwierdzać swój kod w tym samym czasie. Później Build jest testowany i wdrażany.
- Po Jenkinsie 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ć swoją instalację Jenkinsa z narzędziami kontroli wersji, takimi jak Git, musisz zainstalować wtyczki związane z Git
- Największym plusem Jenkinsa jest to, że jest zarządzany przez społeczność, która organizuje publiczne spotkania i bierze wkład od opinii publicznej do rozwoju projektów Jenkins
- Największą wadą Jenkina jest to, że jego interfejs jest przestarzały i nie jest przyjazny dla użytkownika w porównaniu z obecnymi trendami w interfejsie użytkownika.