Jenkins to jeden z najbardziej znanych systemów Continuous Integration i Continuous Delivery. Mimo, że często jest utożsamiany z systemem nieco przestarzałym, to jednak dominuje on w wielu systemach i ofertach pracy. Zwłaszcza jest on preferowany w projektach opartych o Java, ponieważ dostarcza on wiele funkcjonalności dedykowanych temu językowi. Sam Jenkins jest stworzony przez Java Developerów.
Jenkins to bezpłatna dystrybucja, która narodziła się z Hudson’a – obecnie niewspieranego systemu CI/CD.
Jenkins – możliwości przez niego dostarczane
Przede przede wszystkim Jenkis to narzędzie CI/CD, wiec pozwala on na pełną automatyzację wszystkich procesów:
- kompilowania projektu;
- wykonania testów jednostkowych;
- wykonania testów integracyjnych;
- budowanie i publikowania aplikacji.
Jest jednym z łatwiejszych w opanowaniu systemów CI/CD. Bez skompilowanych czynności możemy uruchomić Jenkins na lokalnej maszynie, w Cloud, lub z wykorzystaniem Dockera.
Poprzez bogatą ilość wtyczek jesteśmy w stanie integrować się z wieloma narzędziami, które wspomogą naszą pracę. Wśród nich moją ulubioną wtyczką jest SonarQube, która pozwala na statyczną analizę kodu. Innymi słowy dopuszczalne jest zdefiniowanie pipeline (ciąg następujących czynności wykonywanych przez Jenkins’a) w ramach, którego będziemy sprawdzać nie tylko kompilowalność projektu i poprawność testów, ale dodatkowo automatycznie weryfikowali jakość kodu. W przypadku kiedy SonarQube negatywnie zaopiniuje kod, wówczas pepline zakończy się błędem.
Kolejną zaletą Jenkins’a jest możliwość jego pracy w rozproszeniu. Możemy mieć wiele maszyn na których będziemy dystrybuować pracę systemu, tym samym przyspieszając kompilowanie, testowanie i wdrażanie finalnej aplikacji na wielu platformach.
Jenkins – słowa krytyki
Niestety Jenkins nie sprawdza się w przypadku mniejszych projektów – osobistych i startupowych, ponieważ wymaga od nas dedykowanej maszyny, na której będzie pracował. W takich przypadkach polecam Ci CircleCI, który dla małych projektów jest bezpłatny a dodatkowo jest to narzędzie self-hosted. Jeśli chcesz lepiej poznać CircleCI to zapraszam Cię na swój kurs o nim:
Częstym znanym problemem Jenkins’a jest aktualizacji wtyczek. Czasem jeden pipeline wymaga od nas konkretnej wersji wtyczki. Natomiast inny pipline wymaga jej nowszej wersji – wtedy jesteśmy uziemieni. Nie możemy korzystać z wielu wersji wtyczek.
Jak zacząć pracę z Jenkins?
Na moim kanale pojawił się materiał w ramach którego od podstaw pokazuje w jaki sposób zacząć korzystać z Jeckins’a. W praktycznym przykładzie pokazuje aplikacje napisaną w Spring Boot, którą następnie wdrażamy na serwer Heroku – oczywiście tylko w przypadku jeśli faza kompilacji i testów na Jenkins będzie przebiegła pomyślnie.