Lepsze narzędzie CI w 2022 roku?

Omówmy te dwa popularne narzędzia ciągłej integracji i ich różnice.

Sposób cyklu życia oprogramowania zmienił się drastycznie w ciągu ostatniej dekady.

Wcześniej model kaskadowy był drogą do postępu, potem pojawiła się metodologia zwinna, w której rozwój odbywał się iteracyjnie, a teraz dzięki DevOps zarówno rozwój, jak i operacje odbywają się iteracyjnie i nieprzerwanie, aż do opracowania i wdrożenia kompletnej aplikacji.

Bardzo popularne stało się określenie CI/CD, które oznacza ciągłą integrację i ciągłe dostarczanie. Jest to praktyka DevOps, która pomaga rozwijać i dostarczać aplikację znacznie szybciej i niezawodnie. Jest to metodologia, która automatyzuje wszystkie etapy, począwszy od wymagań biznesowych, aż po wdrożenie na produkcję za pomocą narzędzia CICD. Jest to o wiele lepsze i bezpieczniejsze niż robienie wszystkiego ręcznie.

Obecnie dostępnych jest wiele narzędzi do CI/CD, więc wybór odpowiednich narzędzi może być mylący.

Dlaczego Jenkins?

Jenkins to najpopularniejsze narzędzie do ciągłej integracji typu open source. Jest to de facto standard dla rozwiązania ciągłej integracji.

Możesz zainstalować Jenkins na głównych systemach operacyjnych, takich jak Windows lub Linux, ponieważ działa na Javie. Został pierwotnie stworzony jako narzędzie do automatyzacji kompilacji dla aplikacji Java. Od tego czasu bardzo się rozwinął i ma ponad 1400 wtyczek do łatwej integracji z innymi platformami i narzędziami.

Jenkins to podstawowe narzędzie do ciągłej integracji i ciągłego dostarczania w procesie tworzenia oprogramowania. Jest prosty w instalacji i zapewnia pulpit nawigacyjny do zarządzania projektami, do którego można łatwo uzyskać dostęp za pośrednictwem przeglądarki.

Deweloperzy używają Jenkins do automatycznego tworzenia, integrowania, testowania i wdrażania swojego kodu. Najpierw programiści sprawdzają swój kod, a następnie Jenkins pobiera zmieniony kod źródłowy, uruchamia kompilację i uruchamia test, jeśli jest to wymagane. Po zakończeniu kompilacji otrzymasz dane wyjściowe na pulpicie nawigacyjnym Jenkins, a powiadomienie może zostać wysłane do programisty, jeśli jest ustawione.

Dlaczego TeamCity?

TeamCity to komercyjny serwer CI/CD, który jest również oparty na javie. Jest to narzędzie do automatyzacji i zarządzania kompilacją stworzone przez JetBrains.

Hasłem TeamCity jest „Potężna ciągła integracja po wyjęciu z pudełka”, a to narzędzie to uzasadnia. Oferuje prawie wszystkie funkcje Jenkinsa z kilkoma dodatkowymi. TeamCity może zintegrować się z Dockerem w celu automatycznego tworzenia kontenerów za pomocą docker-compose. Posiada wsparcie integracji dla narzędzia Jira, aby łatwo śledzić problemy.

TeamCity obsługuje platformę .NET i można łatwo zintegrować TeamCity z kilkoma środowiskami IDE, takimi jak Eclipse, Visual Studio itp. Dzięki integracji umożliwiającej budowanie repozytorium artefaktów, TeamCity może przechowywać artefakty w systemie plików serwera TeamCity lub w pamięci zewnętrznej.

Dzięki bezpłatnej wersji licencji serwerowej TeamCity Professional możesz utworzyć 100 kompilacji i 3 agentów kompilacji za darmo.

Jenkins kontra TeamCity

Oprogramowanie typu open source a komercyjne

Najbardziej podstawowa różnica polega na tym, że Jenkins jest narzędziem ciągłej integracji typu open source, a TeamCity jest narzędziem komercyjnym. Projekt Jenkins jest udostępniany na licencji MIT i wspierany przez programistów na całym świecie. TeamCity jest rozwijany i utrzymywany przez firmę macierzystą JetBrains.

Interfejs

Interfejs TeamCity jest piękny, a interfejs pomaga przyciągnąć wielu początkujących, którzy zaczynają od ciągłej integracji i szukają narzędzia CI. W interfejsie TeamCity możesz tagować, komentować i przypinać kompilację, aby lepiej je organizować.

Interfejs Jenkinsa jest oldschoolowy. Nie jest zbyt atrakcyjny i ma ogromny zakres ulepszeń z perspektywy interfejsu użytkownika.

Ekskluzywne funkcje

Chociaż Jenkins nie ma wielu wbudowanych funkcji, jego ogromny ekosystem wtyczek zapewnia mnóstwo funkcji, których inne narzędzia CI nie mogą zaoferować. Dzięki takim funkcjom wtyczek Jenkins jest przyzwyczajony do tworzenia kompilacji i analizowania kodu, co pomaga poprawić jakość kodu.

Z drugiej strony, oprócz niektórych zwykłych funkcji narzędzi CI, TeamCity oferuje wiele gotowych funkcji. Obsługuje wiele platform, takich jak Java, Ruby, .NET itp. Możesz także tworzyć obrazy dockera za pośrednictwem TeamCity. Dzięki obsłudze Bugzilli i Jira możesz z łatwością śledzić problemy. Ponadto zmiany w kompilacji i historia niepowodzeń są przechowywane, aby zachować wcześniejsze informacje o statystykach, uruchamianiu poprzednich kompilacji i raportach z historii testów.

Instalacja

Aby zainstalować Jenkins w swoim systemie, musisz mieć na nim obecną Javę. Konfiguracja Jenkinsa jest prosta, gdy obaj są już w systemie. Po zakończeniu instalacji możesz rozpocząć pracę nad Jenkinsem w jego interfejsie internetowym.

Instalacja TeamCity jest również bardzo łatwa. Musisz pobrać TeamCity Server, przejść do dokumentacji i postępować zgodnie z podanymi instrukcjami.

Integracje

Nie wydaje mi się, żeby żadne narzędzie CI było choćby zbliżone do konkurencji Jenkinsa, kiedy mówimy o możliwościach integracji. Popularność Jenkinsa istnieje na rynku, ponieważ zapewnia integrację z setkami darmowych wtyczek.

W porównaniu do Jenkins, TeamCity może integrować się ze znacznie mniejszymi wtyczkami. Ale oferuje kilka ekskluzywnych integracji, co składa się na jego „funkcje po wyjęciu z pudełka”. Obsługuje platformę .NET i integruje się z Visual Studio Team Services, zapewniając integrację chmury z dostawcami chmury, takimi jak AWS, Azure, GCP, VMware.

Bezpieczeństwo

Dobrą częścią komercjalizacji TeamCity jest to, że JetBrains obsługuje go tak, aby był priorytetem dla każdego wyszukiwania bezpieczeństwa. TeamCity zapewnia integrację z Wtyczka bezpieczeństwa Snyk, który może wykonywać skanowanie podatności w potoku kompilacji. Pomaga identyfikować i eliminować wszystkie zagrożenia i zagrożenia, które występują w twoich kompilacjach.

Biorąc pod uwagę, że Jenkins jest oprogramowaniem typu open source, ograniczanie ryzyka może się opóźnić, ponieważ wszystko zależy od społeczności programistów.

Wspólnota

Społeczność Jenkins jest ogromna niż TeamCity. Ponieważ Jenkins jest oprogramowaniem typu open source, każdy programista może przyczynić się do tego projektu. Codziennie nowi programiści dodają swój wkład do tego projektu, aby dodawać nowe funkcje i ulepszać narzędzie.

Z drugiej strony, TeamCity jest narzędziem komercyjnym i jest utrzymywany przez zespół JetBrains. Posiada profesjonalną społeczność wsparcia, która rozwija to narzędzie.

cennik

Jenkins jest darmowy, ponieważ jest open source i dlatego jest preferowanym wyborem dla wielu organizacji. Organizacje oszczędzają sporo, nie wydając nic na narzędzie CI, takie jak Jenkins.

TeamCity nie jest darmowy. Pochodzi z dwie licencje, które są licencją na serwer Professional i licencją na serwer Enterprise. W profesjonalnej licencji serwerowej możesz bezpłatnie korzystać ze 100 konfiguracji kompilacji i 3 agentów kompilacji, a następnie 299 USD za 1 dodatkowego agenta kompilacji i 10 konfiguracji kompilacji. Licencja na serwer korporacyjny TeamCity zaczyna się od 3 agentów, co zapewnia nieograniczoną liczbę konfiguracji kompilacji już od 1999 $.

Tabela porównawcza

Jenkins
TeamCity
Napisane w
Jawa
Jawa
Deweloper
CloudBees, Kohsuke Kawaguchi, bezpłatne i otwarte oprogramowanie
JetBrains
Licencja
Licencja MIT
Zastrzeżone oprogramowanie komercyjne
Cechy

  • Otwarte źródło
  • Bogaty zestaw wtyczek
  • Łatwe ustawienie
  • Wsparcie dla budowy rurociągów
  • Wtyczka przepływu pracy
  • Mnóstwo integracji
  • Hostowane wewnętrznie
  • Twórz, wdrażaj lub uruchamiaj wszystko asynchronicznie
  • Wydawca HTML
  • Budowa przepustnicy
  • Kluczowe Integracje
  • Integracja z chmurą
  • Historia kompilacji
  • Buduj infrastrukturę
  • Śledzenie jakości kodu
  • Interoperacyjność VCS
  • Konserwacja systemu
  • Zarządzanie użytkownikami
  • Rozszerzalność i dostosowywanie
  • Wstępnie przetestowane zobowiązanie

Łatwość użycia
TAk
TAk
Interfejs użytkownika
Bardzo prosty interfejs
Ma atrakcyjny i piękny interfejs
Wspólnota
Ponieważ jest to open-source, społeczność jest większa
Mniejszy w porównaniu do Jenkinsa
cennik
Bezpłatny
Licencja Professional Server kosztuje 299 $ za agenta kompilacji po 3 darmowych agentach kompilacji

natomiast

Koszt licencji Enterprise Server zaczyna się od 1999$

Integracje
1400+ integracji
300+ integracji
Bezpieczeństwo
Mniej bezpieczne
Bardziej zabezpieczone
API
Obsługuje JSON, Python, RESTful API: XML
Obsługuje RESTful API za pomocą komunikatów serwisowych i tworzy wtyczki za pomocą Open API
Obsługa języka programowania
Java, PHP, C, C++, Fortran, Python i wiele innych języków skryptowych
Python, C++, Java, .NET, Ruby, PHP, Node.js i inne
Obsługa kontenerów
Korzystanie z wtyczki Docker dla Jenkins
Pierwszorzędna obsługa platformy Docker po wyjęciu z pudełka
Cykl wydawniczy
Częstsze
Rzadziej
Raportowanie
Zapewnia szczegółowy raport dla kompilacji i testów
Zapewnia raporty z lepszym interfejsem internetowym

Wniosek

Teraz znasz różnice między dwoma najpopularniejszymi narzędziami do ciągłej integracji – Jenkins i TeamCity.

Wybierając narzędzie CI dla swojej organizacji, musisz sprawdzić kilka parametrów, takich jak opcje hostingu, dostępne integracje, biblioteka kodów wielokrotnego użytku, obsługa kontenerów oraz łatwość obsługi i nauki tego narzędzia. Narzędzie do ciągłej integracji, które spełnia te parametry, byłoby doskonałą opcją.

Jeśli nadal masz wątpliwości, wypróbuj je z darmową wersją Jenkins i TeamCity. Po utworzeniu kilku kompilacji na tych platformach będziesz w bardziej komfortowej sytuacji, aby zdecydować, które narzędzie jest lepsze do ciągłej integracji Twoich projektów.