Przede wszystkim od dzisiaj GitLab Community Edition może być w pełni interoperacyjna z Jenkins. Bez pytania.
Poniżej przedstawiam kilka opinii na temat udanego doświadczenia, które łączy zarówno Jenkins, jak i GitLab CI. Omówię również, czy należy używać obu, czy tylko jednego, iz jakiego powodu.
Mam nadzieję, że dostarczy Ci to wartościowych informacji na temat Twoich własnych projektów.
Mocne strony GitLab CI i Jenkins
GitLab CI
GitLab CI jest naturalnie zintegrowany z GitLab SCM. Możesz tworzyć potoki za pomocą gitlab-ci.yml
plików i manipulować nimi za pomocą interfejsu graficznego.
Te potoki jako kod można oczywiście przechowywać w bazie kodu, wymuszając praktykę „wszystko jako kod” (dostęp, wersjonowanie, odtwarzalność, możliwość ponownego użycia itp.).
GitLab CI to świetne narzędzie do zarządzania wizualnego:
- wszyscy członkowie zespołów (w tym nietechniczni) mają szybki i łatwy dostęp do stanu cyklu życia aplikacji.
- dlatego może być używany jako interaktywny i operacyjny pulpit nawigacyjny do zarządzania wersjami.
Jenkins
Jenkins to świetne narzędzie do budowania. Jego siła tkwi w wielu wtyczkach. Szczególnie miałem wielkie szczęście w używaniu wtyczek interfejsu między Jenkinsem a innymi narzędziami CI lub CD. Jest to zawsze lepsza opcja niż przebudowa (prawdopodobnie źle) interfejsu dialogowego między dwoma komponentami.
Pipeline jako kod jest również dostępny za pomocą groovy
skryptów.
Używanie GitLab CI i Jenkins razem
Na początku może wydawać się to trochę zbędne, ale połączenie GitLab CI i Jenkinsa jest dość potężne.
- GitLab CI organizuje (łańcuchy, przebiegi, monitory ...) potoki i można skorzystać z jego graficznego interfejsu zintegrowanego z GitLab
- Jenkins wykonuje zadanie i ułatwia dialog z narzędziami innych firm.
Kolejną zaletą tego projektu jest luźne połączenie między narzędziami:
- moglibyśmy wymienić dowolny z komponentów build factory bez konieczności przeróbki całego procesu CI / CD
- moglibyśmy mieć heterogeniczne środowisko kompilacji, łączące (prawdopodobnie kilka) Jenkins, TeamCity, jak to nazywasz, i nadal mieć jedno narzędzie do monitorowania.
Kompromis
Cóż, oczywiście za ten projekt trzeba zapłacić: początkowa konfiguracja jest uciążliwa i musisz mieć minimalny poziom zrozumienia wielu narzędzi.
Z tego powodu nie polecam takiej konfiguracji, chyba że
- masz do czynienia z wieloma narzędziami innych firm. Wtedy Jenkins jest bardzo przydatny dzięki wielu wtyczkom.
- musisz radzić sobie ze złożonymi aplikacjami z heterogenicznymi technologiami, z których każda ma inne środowisko kompilacji, i nadal musisz mieć ujednolicony interfejs zarządzania cyklem życia aplikacji.
Jeśli nie jesteś w żadnej z tych sytuacji, prawdopodobnie lepiej będzie, jeśli masz tylko jedną z nich, ale nie obie.
Gdybym miał wybrać jedną
Zarówno GitLab CI, jak i Jenkins mają wady i zalety. Oba są potężnymi narzędziami. Więc który wybrać?
odpowiedź 1
Wybierz tę, w której Twój zespół (lub ktoś bliski) ma już pewien poziom wiedzy.
Odpowiedź 2
Jeśli wszyscy jesteście na pierwszym roku w technologiach CI, po prostu wybierzcie jedną i zacznijcie.
- Jeśli używasz GitLab i masz talent do wszystkiego jako kodu, wybór GitLab CI jest absolutnie sensowny.
- Jeśli musisz dialogować z wieloma innymi narzędziami CI / CD lub absolutnie potrzebujesz tego GUI do tworzenia swoich zadań, wybierz Jenkins.
Ci z was, którzy używają GitLab i nie są pewni, czy będą to robić nadal, muszą pamiętać, że wybranie GitLab CI oznaczałoby usunięcie wszystkich twoich potoków CI / CD.
Ostatnie słowo jest takie: równowaga przechyla się trochę w stronę Jenkinsa ze względu na wiele wtyczek, ale są szanse, że GitLab CI szybko wypełni tę lukę.