2016-05-25 25 views
64

Czy ktoś może proszę dać mi znać, jaka jest różnica między Jenkins i innymi CI jak Gitlab-CI, drone.io pochodzących z dystrybucji GIT. W niektórych badaniach mogłem tylko powiedzieć, że edycja społecznościowa Gitlab nie pozwala na dodanie Jenkinsa, ale robi to firma Gitlab enterprise edition. Czy są jakieś inne znaczące różnice.Gitlab CI vs Jenkins

+2

GitLab zestawił także porównanie GitLab CI z Jenkinsem: https://obout.gitlab.com/comparison/gitlab -vs-jenkins.html – bbodenmiller

Odpowiedz

68

To jest moje doświadczenie:

W mojej pracy możemy zarządzać naszymi repozytoria z gitlab ee i mamy serwera Jenkins (1,6) Bieg.

W zasadzie robią prawie tak samo. Będą uruchamiać niektóre skrypty na obrazie serwera/dockera.

TL; DR;

  • Jenkins jest łatwiejszy w użyciu/nauczyć, ale ma ryzyko stania się piekło wtyczki
  • Jenkins ma GUI (może to być korzystne, jeśli ma być dostepne/utrzymaniu innych osób)
  • integracja z GitLab jest mniejsza niż z Gitlab-Ci
  • Jenkins można podzielić się swoją repo
  • serwery

Większość CI są dość proste (concourse.ci, gitlab-ci, circle-ci, travis-ci, drone.io, gocd i co jeszcze masz). Pozwalają one na wykonanie powłoki/bat z definicji pliku yaml. Jenkins jest znacznie bardziej wtykowy i ma interfejs użytkownika. Może to być zaleta lub wada, w zależności od twoich potrzeb.

Jenkins jest bardzo konfigurowalny ze względu na wszystkie dostępne wtyczki. Wadą tego jest to, że serwer CI może stać się spaghetti z wtyczkami.

Moim zdaniem połączenie i aranżacja miejsc pracy w Jenkins jest znacznie prostsza (z powodu interfejsu użytkownika) niż przez Yaml (wywoływanie poleceń curl). Poza tym Jenkins obsługuje wtyczki, które instalują określone pliki binarne, gdy nie są dostępne na twoim serwerze (nie wiem o tym dla innych).

Obecnie (jenkins2 obsługuje więcej odpowiedniego „CI” z Jenkinsfile i pipline wtyczki, która pochodzi od domyślnej Jenkins 2), lecz stosuje się mniej w połączeniu z repozytorium niż to gitlab CI.

Używanie plików yaml do zdefiniowania budowy rurociągu (a na końcu działająca czysta powłoka/nietoperz) jest czystsze.

EDIT: co zapomniałem wspomnieć tutaj jest plug-iny dostępne dla Jenkins, które pozwalają wizualizować wszystkie rodzaje raportów, takie jak wyniki badań, ubezpieczenia i innych analizatorów statycznych. Oczywiście zawsze możesz napisać lub użyć narzędzia, aby zrobić to za Ciebie, ale jest to zdecydowanie plus dla Jenkinsa (szczególnie dla menedżerów, którzy mają tendencję do zbytniego doceniania tych raportów)

EDIT2: Ostatnio pracowałem coraz więcej z Gitlab-ci. W Gitlab wykonują naprawdę świetną robotę, dzięki czemu zabawa staje się przyjemnością. Rozumiem, że ludzie używają Jenkinsa, ale kiedy masz Gitlab, który działa i jest dostępny, bardzo łatwo jest zacząć pracę z Gitlab-ci. Nie będzie niczego, co zintegrowałoby się tak płynnie, jak Gitlab-ci, mimo że wkładają sporo wysiłku w integrację z innymi firmami.

  • Ich dokumentacja powinna zacząć grę w krótkim czasie
  • próg na początek jest bardzo niska
  • konserwacja jest prosta (bez wtyczki)
  • skalowania biegaczy jest prosta
  • CI pełni częścią repozytorium
  • Jenkins Praca/widoki można dostać niechlujny

Niektóre profity w czasie pisania

  • Tylko wsparcie dla pojedynczego pliku, ale to będzie fixed wkrótce
+5

Jenkins może teraz uzyskać ładniejszy GUI dzięki [Blue Ocean] (https://jenkins.io/projects/blueocean/) –

+2

Jako że z gitlab 9.3 dodano obsługę potoków multiprojekcji. To był dla mnie jeden z głównych powodów, by trzymać się Jenkinsa. Obecnie robię PoC, aby sprawdzić, czy mogę sobie poradzić z gitlabem, ponieważ wyraźnie koncentrują się na tym teraz i rozwijają się znacznie szybciej. Poza tym uwielbiam interfejs użytkownika i jego ewolucję w czasie. – Rik

33

zgadzam się z większością z nutami rik, ale moja opinia na temat, który jest prostszy jest przeciwieństwo: GitLab okazuje się być wspaniałym narzędziem do pracy.

większość energii pochodzi z bycia samowystarczalny i integrating everything tego samego produktu w ramach tej samej karcie przeglądarki: z repozytorium przeglądarce, płyty emisyjnego lub zbudować historię do narzędzi wdrażania i monitoring.

Używam go teraz zautomatyzować i przetestować jak aplikacja instaluje się na różnych dystrybucjach Linuksa i to tylko błyskawicznie skonfigurować (spróbuj otworzyć złożoną konfigurację pracy Jenkins na firefox i czekać na nie reagują skrypt do porównania w porównaniu do lekkości edycji .gitlab-ci.yml). Czas spędzony na konfigurowaniu/scalling slave jest znacznie mniej dzięki runner binaries; plus fakt, że w GitLab.com dostajesz całkiem przyzwoite i darmowe wspólne biegacze.

Jenkins czuje się więcej instrukcji po kilku tygodniach bycia zaawansowanym użytkownikiem GitLab CI, np. duplikowanie zadań w oddziale, instalowanie wtyczek do robienia prostych rzeczy, takich jak przesyłanie SCP. Jedynym przypadkiem, w którym spotkałem się z sytuacją, w której tęsknię, jest sytuacja, gdy zaangażowane jest więcej niż jedno repozytorium; to musi być jeszcze ładnie opracowane.

Przy okazji, obecnie piszę serię na temat GitLab CI, aby pokazać, jak nie jest trudno skonfigurować z nią infrastrukturę CI repozytorium. Opublikowany w ubiegłym tygodniu pierwszy artykuł przedstawiający podstawy, plusy i minusy oraz różnice z innymi narzędziami: https://solidgeargroup.com/gitlab_countinuous_integration_intro

+2

Całkowicie zgadzam się z tobą na temat Gitlab. W momencie pisania gitlab nie było tak kompletne, jak jest obecnie. Bardzo lubię Gitlaba jako narzędzie i naprawdę doceniam pracę, którą w nią wkładają. – Rik

+1

@alfageme: Sprawdzę Twoje raporty na wspomnianej stronie W każdym razie: Dziękuję za wszystkie wyjaśnienia. W tym momencie zamierzam zdecydować, czy używamy gitlabCI, czy Jenkinsa dla naszego CI-Sectu. –

+0

@MaxS Czego używałeś w końcu? – user1870400

Powiązane problemy