{"id":96161,"date":"2020-10-08T19:42:48","date_gmt":"2020-10-08T17:42:48","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/bitva-jenkins-i-gitlab-ci-cd"},"modified":"2020-10-08T19:42:48","modified_gmt":"2020-10-08T17:42:48","slug":"bitva-jenkins-i-gitlab-ci-cd","status":"publish","type":"post","link":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/bitva-jenkins-i-gitlab-ci-cd","title":{"rendered":"Bitwa pomi\u0119dzy Jenkins a GitLab CI\/CD","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>W ostatniej dekadzie osi\u0105gni\u0119to znaczne post\u0119py w obszarze rozwoju narz\u0119dzi ci\u0105g\u0142ej integracji (Continuous Integration, CI) oraz ci\u0105g\u0142ego wdra\u017cania (Continuous Delivery, CD). Rozw\u00f3j technologii integracji rozw\u00f3j i eksploatacji oprogramowania (Development Operations, DevOps) doprowadzi\u0142 do szybkiego wzrostu zapotrzebowania na narz\u0119dzia CI\/CD. Istniej\u0105ce rozwi\u0105zania s\u0105 stale udoskonalane, aby nad\u0105\u017ca\u0107 za czasami, a nowe wersje s\u0105 wprowadzane, w \u015bwiecie kontroli jako\u015bci oprogramowania (Quality Assurance, QA) nieustannie pojawia si\u0119 wiele nowych produkt\u00f3w. Przy tak bogatym wyborze dob\u00f3r odpowiednich narz\u0119dzi okazuje si\u0119 skomplikowanym zadaniem.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/ruvds\/blog\/522334\/\"><img decoding=\"async\" alt=\"Bitwa pomi\u0119dzy Jenkins a GitLab CI\/CD\" src=\"\/wp-content\/uploads\/2020\/10\/6cf6dfa92ebec7d6e44776e9c9bfbb6d.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p>W\u015br\u00f3d wszystkich istniej\u0105cych narz\u0119dzi CI\/CD znajduj\u0105 si\u0119 dwa projekty, na kt\u00f3re zdecydowanie warto zwr\u00f3ci\u0107 uwag\u0119, je\u015bli poszukujesz czego\u015b w tej dziedzinie. Mowa o Jenkinsie oraz narz\u0119dziu GitLab CI\/CD, kt\u00f3re jest cz\u0119\u015bci\u0105 platformy GitLab. Jenkins ma ponad <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/jenkinsci\/jenkins\">16000<\/a><\/noindex> gwiazdek na GitHubie. Repozytorium GitLab na gitlab.com zdoby\u0142o troch\u0119 wi\u0119cej ni\u017c <noindex><a rel=\"nofollow\" href=\"https:\/\/gitlab.com\/gitlab-org\/gitlab\">2000<\/a><\/noindex> gwiazdek. Por\u00f3wnuj\u0105c popularno\u015b\u0107 repozytori\u00f3w, okazuje si\u0119, \u017ce Jenkins zdoby\u0142 8 razy wi\u0119cej gwiazdek ni\u017c platforma, kt\u00f3rej cz\u0119\u015bci\u0105 jest GitLab CI\/CD. Jednak przy wyborze narz\u0119dzia CI\/CD nie jest to jedyny wska\u017anik, na kt\u00f3ry warto zwr\u00f3ci\u0107 uwag\u0119. Istnieje wiele innych, co t\u0142umaczy, dlaczego w wielu por\u00f3wnaniach Jenkins i GitLab CI\/CD s\u0105 do siebie bardzo zbli\u017cone.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nNa przyk\u0142ad, dane z platformy G2, kt\u00f3ra zbiera opinie na temat r\u00f3\u017cnych produkt\u00f3w oraz oceny przyznawane przez u\u017cytkownik\u00f3w, pokazuj\u0105, \u017ce \u015brednia ocena <noindex><a rel=\"nofollow\" href=\"https:\/\/www.g2.com\/products\/jenkins\/reviews\">Jenkins<\/a><\/noindex>, oparta na 288 opiniach, wynosi 4,3 gwiazdki. A o <noindex><a rel=\"nofollow\" href=\"https:\/\/www.g2.com\/products\/gitlab\/reviews\">GitLab<\/a><\/noindex> tutaj jest 270 opinii, a \u015brednia ocena tego narz\u0119dzia wynosi 4,4 gwiazdki. Nie pomylimy si\u0119, stwierdzaj\u0105c, \u017ce Jenkins i GitLab CI\/CD konkuruj\u0105 ze sob\u0105 na r\u00f3wnych warunkach. Interesuj\u0105ce jest to, \u017ce projekt Jenkins powsta\u0142 w 2011 roku i od tego czasu jest ulubionym narz\u0119dziem tester\u00f3w. Jednak projekt GitLab CI\/CD, uruchomiony w 2014 roku, zdoby\u0142 wysokie pozycje dzi\u0119ki zaawansowanym mo\u017cliwo\u015bciom oferowanym przez t\u0119 platform\u0119.<\/p>\n<p>Je\u015bli chodzi o popularno\u015b\u0107 Jenkinsa w por\u00f3wnaniu do innych podobnych platform, warto zauwa\u017cy\u0107, \u017ce po opublikowaniu artyku\u0142u, w kt\u00f3rym por\u00f3wnano platformy Travis CI i Jenkins, zorganizowali\u015bmy ankiet\u0119. Wzi\u0119\u0142o w niej udzia\u0142 85 u\u017cytkownik\u00f3w. Respondentom zaproponowano wyb\u00f3r narz\u0119dzia CI\/CD, kt\u00f3re najbardziej im odpowiada. 79% wybra\u0142o Jenkinsa, 5% wybra\u0142o Travis CI, a 16% wskaza\u0142o, \u017ce preferuje inne narz\u0119dzia.<\/p>\n<p><img decoding=\"async\" alt=\"Bitwa pomi\u0119dzy Jenkins a GitLab CI\/CD\" src=\"\/wp-content\/uploads\/2020\/10\/b66b5d3d5f27f3310c8bf0fc68f4c636.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Wyniki ankiety<\/i><\/p>\n<p>W\u015br\u00f3d innych narz\u0119dzi CI\/CD najcz\u0119\u015bciej wymieniano GitLab CI\/CD.<\/p>\n<p>Je\u015bli powa\u017cnie zajmujesz si\u0119 DevOps, musisz starannie dobiera\u0107 odpowiednie narz\u0119dzia, bior\u0105c pod uwag\u0119 specyfik\u0119 projektu, jego bud\u017cet i inne wymagania. Aby pom\u00f3c Ci podj\u0105\u0107 w\u0142a\u015bciw\u0105 decyzj\u0119, zamierzamy przeprowadzi\u0107 analiz\u0119 Jenkinsa i GitLab CI\/CD. Mo\u017cemy mie\u0107 nadziej\u0119, \u017ce pomo\u017ce Ci to dokona\u0107 w\u0142a\u015bciwego wyboru.<\/p>\n<h2>Wprowadzenie do Jenkinsa<\/h2>\n<p>\n<img decoding=\"async\" alt=\"Bitwa pomi\u0119dzy Jenkins a GitLab CI\/CD\" src=\"\/wp-content\/uploads\/2020\/10\/f7df92d1fb3f81f785fc59da82a943b7.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/www.jenkins.io\/\">Jenkins<\/a><\/noindex> \u2014 to szeroko znane, elastyczne narz\u0119dzie CI\/CD, przeznaczone do automatyzacji wielu zada\u0144 zwi\u0105zanych z projektami programistycznymi. Jenkins jest w pe\u0142ni napisany w Javie i wydany na licencji MIT. Posiada pot\u0119\u017cny zestaw mo\u017cliwo\u015bci, skierowanych na automatyzacj\u0119 zada\u0144 zwi\u0105zanych z budowaniem, testowaniem, wdra\u017caniem, integracj\u0105 i wydawaniem oprogramowania. To narz\u0119dzie mo\u017cna u\u017cywa\u0107 w r\u00f3\u017cnych systemach operacyjnych, w tym macOS, Windows i wielu dystrybucjach Linuxa, takich jak OpenSUSE, Ubuntu i Red Hat. Istniej\u0105 pakiety instalacyjne Jenkinsa, przeznaczone dla r\u00f3\u017cnych system\u00f3w operacyjnych, wi\u0119c mo\u017cna zainstalowa\u0107 to narz\u0119dzie w Dockerze i na ka\u017cdym systemie, w kt\u00f3rym jest zainstalowane JRE (Java Runtime Environment).<\/p>\n<p>Deweloperzy Jenkinsa stworzyli jeszcze jeden projekt, Jenkins X, przeznaczony do pracy w \u015brodowisku Kubernetes. W Jenkins X zintegrowane s\u0105 Helm, serwer Jenkins CI\/CD, Kubernetes i inne narz\u0119dzia, kt\u00f3re s\u0142u\u017c\u0105 do tworzenia zintegrowanych proces\u00f3w CI\/CD zgodnych z najlepszymi praktykami DevOps. Przyk\u0142adowo, zastosowano tutaj GitOps.<\/p>\n<p>Do zalet Jenkinsa mo\u017cna doda\u0107 r\u00f3wnie\u017c fakt, \u017ce jego skrypty s\u0105 bardzo dobrze zorganizowane, zrozumia\u0142e i \u0142atwe do przeczytania. Zesp\u00f3\u0142 Jenkins stworzy\u0142 oko\u0142o 1000 wtyczek, kt\u00f3re skierowane s\u0105 na organizacj\u0119 interakcji Jenkinsa z r\u00f3\u017cnymi technologiami. W skryptach mo\u017cna korzysta\u0107 z system\u00f3w autoryzacji, co na przyk\u0142ad umo\u017cliwia \u0142\u0105czenie si\u0119 z r\u00f3\u017cnymi zamkni\u0119tymi systemami.<\/p>\n<p>Podczas pracy z systemem Jenkins mo\u017cna obserwowa\u0107, co dzieje si\u0119 na ka\u017cdym etapie jego dzia\u0142ania, jak r\u00f3wnie\u017c, czy poszczeg\u00f3lne etapy pracy zako\u0144czy\u0142y si\u0119 sukcesem, czy te\u017c nie. Mo\u017cna to wszystko \u015bledzi\u0107, nie korzystaj\u0105c przy tym z \u017cadnego graficznego interfejsu, a wykorzystuj\u0105c mo\u017cliwo\u015bci terminala.<\/p>\n<h2>Cechy Jenkins<\/h2>\n<p>\nW\u015br\u00f3d powszechnie znanych cech Jenkins mo\u017cna wyr\u00f3\u017cni\u0107 \u0142atwo\u015b\u0107 konfiguracji, wysoki poziom automatyzacji r\u00f3\u017cnorodnych operacji oraz doskona\u0142\u0105 dokumentacj\u0119. Je\u015bli m\u00f3wimy o rozwi\u0105zaniach DevOps, Jenkins uznawany jest za niezwykle niezawodne narz\u0119dzie, kt\u00f3re zwykle nie wymaga intensywnego monitorowania ca\u0142ego procesu obr\u00f3bki projektu. W przypadku innych narz\u0119dzi CI\/CD sytuacja wygl\u0105da inaczej. Porozmawiajmy o niekt\u00f3rych kluczowych mo\u017cliwo\u015bciach Jenkins.<\/p>\n<h3>\u258d1. Bezp\u0142atno\u015b\u0107, otwarty kod \u017ar\u00f3d\u0142owy, wsparcie wielu platform<\/h3>\n<p>\nJenkins mo\u017ce dzia\u0142a\u0107 na platformach macOS, Windows i Linux. Mo\u017ce r\u00f3wnie\u017c funkcjonowa\u0107 w \u015brodowisku Docker, co pozwala na jednorodne i szybkie wykonywanie zautomatyzowanych zada\u0144. To narz\u0119dzie mo\u017cna tak\u017ce uruchomi\u0107 jako serwlet w kontenerach wspieraj\u0105cych Java, takich jak Apache Tomcat i GlassFish. Instalacja Jenkins jest dobrze <noindex><a rel=\"nofollow\" href=\"https:\/\/www.jenkins.io\/doc\/book\/installing\/\">udokumentowana<\/a><\/noindex>.<\/p>\n<h3>\u258d2. Rozwini\u0119ty ekosystem wtyczek<\/h3>\n<p>\nEkosystem wtyczek Jenkins wygl\u0105da znacznie bardziej rozwini\u0119ty w por\u00f3wnaniu do ekosystem\u00f3w modu\u0142\u00f3w w innych narz\u0119dziach CI\/CD. Obecnie istnieje ponad 1500 wtyczek dla Jenkins. Wtyczki te maj\u0105 na celu rozwi\u0105zanie szerokiego zakresu zada\u0144, za ich pomoc\u0105 mo\u017cna zautomatyzowa\u0107 r\u00f3\u017cnorodne projekty. Bogactwo wyboru darmowych modu\u0142\u00f3w wtycznych sprawia, \u017ce osoby korzystaj\u0105ce z Jenkins nie czuj\u0105 pilnej potrzeby zakupu drogich p\u0142atnych wtyczek. Istnieje mo\u017cliwo\u015b\u0107 <noindex><a rel=\"nofollow\" href=\"https:\/\/www.lambdatest.com\/support\/docs\/jenkins-with-lambdatest\/\">integracj\u0105<\/a><\/noindex> integracji Jenkins z wieloma narz\u0119dziami DevOps.<\/p>\n<h3>\u258d3. \u0141atwa instalacja i konfiguracja<\/h3>\n<p>\nInstalacja i konfiguracja Jenkins jest stosunkowo prosta. Proces aktualizacji systemu r\u00f3wnie\u017c jest bardzo wygodny. Warto ponownie wspomnie\u0107 o jako\u015bci dokumentacji, poniewa\u017c mo\u017cna w niej znale\u017a\u0107 odpowiedzi na r\u00f3\u017cnorodne pytania zwi\u0105zane z instalacj\u0105 i konfiguracj\u0105 Jenkins.<\/p>\n<h3>\u258d4. Przyjazna spo\u0142eczno\u015b\u0107<\/h3>\n<p>\nJak ju\u017c wspomniano, Jenkins to projekt open source, kt\u00f3rego ekosystem obejmuje ogromn\u0105 liczb\u0119 wtyczek. Wok\u00f3\u0142 Jenkinsa zbudowano du\u017c\u0105 spo\u0142eczno\u015b\u0107 u\u017cytkownik\u00f3w i programist\u00f3w, kt\u00f3rzy wspieraj\u0105 rozw\u00f3j projektu. Spo\u0142eczno\u015b\u0107 to jeden z czynnik\u00f3w, kt\u00f3ry przyczynia si\u0119 do rozwoju Jenkinsa.<\/p>\n<h3>\u258d5. Obecno\u015b\u0107 REST API<\/h3>\n<p>\nPodczas pracy z Jenkinsem mo\u017cna korzysta\u0107 z REST API, co rozszerza mo\u017cliwo\u015bci systemu. API do zdalnego dost\u0119pu do systemu jest dost\u0119pne w trzech wariantach: XML, JSON z obs\u0142ug\u0105 JSONP oraz Python. <noindex><a rel=\"nofollow\" href=\"https:\/\/www.jenkins.io\/doc\/book\/using\/remote-access-api\/\">Oto<\/a><\/noindex> strona dokumentacji, kt\u00f3ra szczeg\u00f3\u0142owo opisuje prac\u0119 z REST API Jenkinsa.<\/p>\n<h3>\u258d6. Wsparcie dla r\u00f3wnoleg\u0142ego wykonywania zada\u0144<\/h3>\n<p>\nJenkins wspiera r\u00f3wnoleg\u0142e wykonywanie zada\u0144 DevOps. Mo\u017cna go \u0142atwo zintegrowa\u0107 z odpowiednimi narz\u0119dziami i otrzymywa\u0107 powiadomienia o wynikach wykonania zada\u0144. Wykonywanie test\u00f3w kodu mo\u017cna przyspieszy\u0107 poprzez zorganizowanie r\u00f3wnoleg\u0142ej kompilacji projektu z u\u017cyciem r\u00f3\u017cnych maszyn wirtualnych.<\/p>\n<h3>\u258d7. Wsparcie dla pracy w \u015brodowiskach rozproszonych<\/h3>\n<p>\nJenkins umo\u017cliwia organizowanie rozproszonych kompilacji przy u\u017cyciu kilku komputer\u00f3w. Ta mo\u017cliwo\u015b\u0107 ma zastosowanie w du\u017cych projektach i oparta jest na schemacie, w kt\u00f3rym istnieje jeden g\u0142\u00f3wny serwer Jenkinsa i kilka maszyn podrz\u0119dnych. Maszyny podrz\u0119dne mog\u0105 by\u0107 r\u00f3wnie\u017c wykorzystywane w sytuacjach, gdy konieczne jest przeprowadzenie test\u00f3w projektu w r\u00f3\u017cnych \u015brodowiskach. Te mo\u017cliwo\u015bci korzystnie odr\u00f3\u017cniaj\u0105 Jenkinsa od innych podobnych projekt\u00f3w.<\/p>\n<h2>Poznanie GitLab<\/h2>\n<p>\n<img decoding=\"async\" alt=\"Bitwa pomi\u0119dzy Jenkins a GitLab CI\/CD\" src=\"\/wp-content\/uploads\/2020\/10\/aa89f462b8378c8efefef142ff0ca6be.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/about.gitlab.com\/\">GitLab CI\/CD<\/a><\/noindex> mo\u017cna nazwa\u0107 jednym z najnowszych i najbardziej lubianych narz\u0119dzi przez in\u017cynier\u00f3w DevOps. To darmowe narz\u0119dzie open source jest wbudowane w system kontroli wersji GitLab. Platforma GitLab ma wersj\u0119 community, kt\u00f3ra obs\u0142uguje zarz\u0105dzanie repozytoriami, narz\u0119dzia do \u015bledzenia problem\u00f3w, organizacj\u0119 przegl\u0105d\u00f3w kodu oraz mechanizmy zorientowane na tworzenie dokumentacji. Firmy mog\u0105 lokalnie instalowa\u0107 GitLab, \u0142\u0105cz\u0105c ten system z Active Directory i serwerami LDAP w celu zorganizowania bezpiecznej autoryzacji i uwierzytelniania u\u017cytkownik\u00f3w.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/3quCZ7ZMg0Y\">Oto<\/a><\/noindex> wideo przewodnik, kt\u00f3ry pomo\u017ce Ci dowiedzie\u0107 si\u0119, jak tworzy\u0107 potoki CI\/CD, korzystaj\u0105c z mo\u017cliwo\u015bci GitLab CI\/CD.<\/p>\n<p>Pocz\u0105tkowo GitLab CI\/CD by\u0142 wydany jako samodzielny projekt, ale w 2015 roku zestaw narz\u0119dzi zosta\u0142 zintegrowany z GitLab 8.0. Oddzielny serwer GitLab CI\/CD mo\u017ce obs\u0142ugiwa\u0107 ponad 25000 u\u017cytkownik\u00f3w. Na podstawie takich serwer\u00f3w mo\u017cna tworzy\u0107 systemy charakteryzuj\u0105ce si\u0119 wysok\u0105 dost\u0119pno\u015bci\u0105.<\/p>\n<p>GitLab CI\/CD oraz g\u0142\u00f3wny projekt GitLab s\u0105 napisane w Ruby i Go. S\u0105 wydane na licencji MIT. GitLab CI\/CD, opr\u00f3cz standardowych mo\u017cliwo\u015bci narz\u0119dzi CI\/CD, wspiera r\u00f3wnie\u017c dodatkowe funkcje zwi\u0105zane z planowaniem zada\u0144.<\/p>\n<p>Integracja GitLab CI\/CD z projektem jest bardzo prosta. Przy u\u017cyciu GitLab CI\/CD proces przetwarzania kodu projektu dzieli si\u0119 na etapy, z kt\u00f3rych ka\u017cdy mo\u017ce sk\u0142ada\u0107 si\u0119 z kilku zada\u0144 wykonywanych w okre\u015blonej kolejno\u015bci. Zadania mo\u017cna dostosowa\u0107 w szczeg\u00f3\u0142ach.<\/p>\n<p>Zadania mog\u0105 by\u0107 wykonywane r\u00f3wnolegle. Po skonfigurowaniu kolejno\u015bci etap\u00f3w i zada\u0144, pipeline CI\/CD jest gotowy do pracy. Mo\u017cna monitorowa\u0107 jego post\u0119py, \u015bledz\u0105c stan zada\u0144. Dzi\u0119ki temu korzystanie z GitLab CI\/CD jest bardzo wygodne, by\u0107 mo\u017ce wygodniejsze ni\u017c z innych podobnych narz\u0119dzi.<\/p>\n<h2>Cechy GitLab CI\/CD i GitLab<\/h2>\n<p>\nGitLab CI\/CD to jedno z najpopularniejszych narz\u0119dzi DevOps. Projekt wyr\u00f3\u017cnia si\u0119 wysok\u0105 jako\u015bci\u0105 dokumentacji, a jego funkcje s\u0105 \u0142atwe i wygodne w u\u017cyciu. Je\u015bli jeszcze nie znasz GitLab CI\/CD, poni\u017csza lista mo\u017cliwo\u015bci tego narz\u0119dzia daje og\u00f3lny przegl\u0105d tego, czego mo\u017cna od niego oczekiwa\u0107. Warto zauwa\u017cy\u0107, \u017ce wiele z tych mo\u017cliwo\u015bci ma zwi\u0105zek z sam\u0105 platform\u0105 GitLab, w kt\u00f3rej zosta\u0142 zintegrowany GitLab CI\/CD.<\/p>\n<h3>\u258d1. Popularno\u015b\u0107<\/h3>\n<p>\nGitLab CI\/CD to stosunkowo nowe narz\u0119dzie, kt\u00f3re znalaz\u0142o szerokie zastosowanie. GitLab CI\/CD stopniowo sta\u0142 si\u0119 niezwykle popularnym narz\u0119dziem CI\/CD, u\u017cywanym do automatyzacji test\u00f3w i wdra\u017cania oprogramowania. Jest \u0142atwe w konfiguracji. Co wi\u0119cej, to darmowe narz\u0119dzie CI\/CD jest wbudowane w platform\u0119 GitLab.<\/p>\n<h3>\u258d2. Wsparcie dla GitLab Pages i Jekyll<\/h3>\n<p>\nJekyll to generator statycznych stron, kt\u00f3ry mo\u017cna u\u017cywa\u0107 w systemie GitLab Pages do tworzenia stron opartych na repozytoriach GitLab. System pobiera materia\u0142y \u017ar\u00f3d\u0142owe i generuje na ich podstawie gotow\u0105 statyczn\u0105 stron\u0119. Wygl\u0105d i funkcje takich stron mo\u017cna zarz\u0105dza\u0107, edytuj\u0105c plik <code>_config.yml<\/code>, u\u017cywany przez Jekyll.<\/p>\n<h3>\u258d3. Mo\u017cliwo\u015bci planowania projekt\u00f3w<\/h3>\n<p>\nDzi\u0119ki mo\u017cliwo\u015bci planowania etap\u00f3w projekt\u00f3w zwi\u0119ksza si\u0119 komfort \u015bledzenia problem\u00f3w i ich grupowania. Umo\u017cliwia to zarz\u0105dzanie organizacj\u0105 pracy nad projektami, planowanie ich realizacji na konkretne daty.<\/p>\n<h3>\u258d4. Automatyczne skalowanie runner\u00f3w CI<\/h3>\n<p>\nDzi\u0119ki automatycznemu skalowaniu runner\u00f3w, odpowiedzialnych za realizacj\u0119 konkretnych zada\u0144, mo\u017cna znacznie zaoszcz\u0119dzi\u0107 na kosztach wynajmu mocy serwerowych. Jest to bardzo wa\u017cne, szczeg\u00f3lnie w przypadku \u015brodowisk, w kt\u00f3rych testowanie projekt\u00f3w odbywa si\u0119 r\u00f3wnolegle. Co wi\u0119cej, jest to istotne dla du\u017cych projekt\u00f3w sk\u0142adaj\u0105cych si\u0119 z kilku repozytori\u00f3w.<\/p>\n<h3>\u258d5. Narz\u0119dzia do \u015bledzenia problem\u00f3w<\/h3>\n<p>\nZaawansowane mo\u017cliwo\u015bci GitLab w zakresie \u015bledzenia problem\u00f3w sprawi\u0142y, \u017ce t\u0119 platform\u0119 wykorzystuje wiele projekt\u00f3w open source. GitLab CI\/CD umo\u017cliwia r\u00f3wnoleg\u0142e testowanie r\u00f3\u017cnych ga\u0142\u0119zi kodu. Wyniki test\u00f3w mo\u017cna wygodnie analizowa\u0107 w interfejsie systemu. To korzystnie wyr\u00f3\u017cnia GitLab CI\/CD na tle Jenkins.<\/p>\n<h3>\u258d6. Ograniczenie dost\u0119pu do repozytori\u00f3w<\/h3>\n<p>\nPlatforma GitLab wspiera ograniczenie dost\u0119pu do repozytori\u00f3w. Na przyk\u0142ad, tym, kt\u00f3rzy wsp\u00f3\u0142pracuj\u0105 nad projektem w danym repozytorium, mo\u017cna przypisa\u0107 uprawnienia odpowiednie do ich r\u00f3l. Jest to szczeg\u00f3lnie istotne w projektach korporacyjnych.<\/p>\n<h3>\u258d7. Aktywne wsparcie spo\u0142eczno\u015bci<\/h3>\n<p>\nWok\u00f3\u0142 GitLab stworzy\u0142a si\u0119 aktywna spo\u0142eczno\u015b\u0107, kt\u00f3ra przyczynia si\u0119 do rozwoju tej platformy oraz jej narz\u0119dzi, w tym GitLab CI\/CD. G\u0142\u0119boka integracja GitLab CI\/CD z GitLab upraszcza r\u00f3wnie\u017c znajdowanie odpowiedzi na pytania pojawiaj\u0105ce si\u0119 podczas pracy z GitLab CI\/CD.<\/p>\n<h3>\u258d8. Wsparcie dla pracy z r\u00f3\u017cnymi systemami kontroli wersji<\/h3>\n<p>\nGitLab CI\/CD to system, kt\u00f3ry potrafi wsp\u00f3\u0142pracowa\u0107 nie tylko z kodem przechowywanym w repozytoriach GitLab. Na przyk\u0142ad kod mo\u017cna przechowywa\u0107 w repozytorium GitHub, a pipeline CI\/CD mo\u017cna zorganizowa\u0107 na bazie GitLab z u\u017cyciem GitLab CI\/CD.<\/p>\n<h2>Por\u00f3wnanie Jenkins i GitLab CI\/CD<\/h2>\n<p>\nJenkins i GitLab CI\/CD to bardzo dobre narz\u0119dzia, z kt\u00f3rych ka\u017cde mo\u017ce zapewni\u0107 prawid\u0142owe dzia\u0142anie pipeline\u2019u CI\/CD. Jednak w por\u00f3wnaniu oka\u017ce si\u0119, \u017ce mimo podobie\u0144stw, r\u00f3\u017cni\u0105 si\u0119 one pewnymi aspektami.<\/p>\n<p><strong>Charakterystyka<\/strong><br \/>\n<strong>Jenkins<\/strong><br \/>\n<strong>GitLab CI\/CD<\/strong><\/p>\n<p>Kod otwarty czy zamkni\u0119ty<br \/>\n. Mo\u017cemy rozwija\u0107<br \/>\n. Mo\u017cemy rozwija\u0107<\/p>\n<p>Instalacja<br \/>\nWymagane.<br \/>\nNie jest wymagane, poniewa\u017c to jest wbudowana funkcja platformy GitLab.<\/p>\n<p>Unikalne cechy<br \/>\nWsparcie dla wtyczek.<br \/>\nG\u0142\u0119boka integracja z systemem zarz\u0105dzania wersjami.<\/p>\n<p>Wsparcie<br \/>\nBrak.<br \/>\nJest dost\u0119pne.<\/p>\n<p>Instalacja i konfiguracja<br \/>\nNie sprawiaj\u0105 trudno\u015bci<br \/>\nNie sprawiaj\u0105 trudno\u015bci<\/p>\n<p>Samodzielne wdro\u017cenie systemu<br \/>\nTo jest jedyna opcja u\u017cycia systemu.<br \/>\nJest wspierane.<\/p>\n<p>Tworzenie potok\u00f3w CI\/CD<br \/>\nWspierane, u\u017cywa Jenkins Pipeline.<br \/>\nJest wspierane.<\/p>\n<p>Monitorowanie wydajno\u015bci aplikacji<br \/>\nBrak.<br \/>\nJest dost\u0119pne.<\/p>\n<p>Ekosystem<br \/>\nIstnieje ponad 1000 wtyczek.<br \/>\nSystem rozwija si\u0119 w ramach GitLab.<\/p>\n<p>API<br \/>\nWspiera rozwini\u0119ty system API.<br \/>\nOferuje API dla g\u0142\u0119bszej integracji w projekty.<\/p>\n<p>Wsparcie dla JavaScript<br \/>\nJest dost\u0119pne.<br \/>\nJest dost\u0119pne.<\/p>\n<p>Integracja z innymi narz\u0119dziami<br \/>\nWsparcie dla integracji z innymi narz\u0119dziami i platformami (Slack, GitHub).<br \/>\nWiele narz\u0119dzi do integracji z zewn\u0119trznymi systemami, w szczeg\u00f3lno\u015bci z GitHub i Kubernetes.<\/p>\n<p>Kontrola jako\u015bci kodu<br \/>\nWsparcie \u2014 za pomoc\u0105 wtyczki SonarQube i innych wtyczek.<br \/>\nJest wspierane.<\/p>\n<p><\/p>\n<h2>R\u00f3\u017cnice mi\u0119dzy Jenkins a GitLab CI\/CD<\/h2>\n<p>\nOpisuj\u0105c i por\u00f3wnuj\u0105c Jenkins i GitLab CI\/CD, skoncentrujmy si\u0119 teraz na r\u00f3\u017cnicach mi\u0119dzy tymi narz\u0119dziami DevOps. Wiedza na temat tych r\u00f3\u017cnic pomo\u017ce zrozumie\u0107 preferencje u\u017cytkownik\u00f3w jednego narz\u0119dzia nad drugim.<\/p>\n<ul>\n<li>GitLab CI\/CD mo\u017ce w pe\u0142ni zarz\u0105dza\u0107 repozytoriami Git. Mowa o zarz\u0105dzaniu ga\u0142\u0119ziami repozytori\u00f3w i niekt\u00f3rych innych mo\u017cliwo\u015bciach. Z kolei Jenkins, cho\u0107 potrafi pracowa\u0107 z repozytoriami, nie oferuje takiego samego poziomu kontroli nad nimi jak GitLab CI\/CD.<\/li>\n<li>Jenkins to darmowy projekt open source. Osoba, kt\u00f3ra go wybiera, wdra\u017ca go samodzielnie. A GitLab CI\/CD jest cz\u0119\u015bci\u0105 platformy GitLab, to gotowe rozwi\u0105zanie.<\/li>\n<li>GitLab CI\/CD wspiera rozwini\u0119te narz\u0119dzia zarz\u0105dzania zadaniami, kt\u00f3re dzia\u0142aj\u0105 na poziomie projekt\u00f3w. Ta strona Jenkins jest mniej rozwini\u0119ta.<\/li>\n<\/ul>\n<p><\/p>\n<h2>Jenkins i GitLab CI\/CD: mocne i s\u0142abe strony<\/h2>\n<p>\nTeraz masz ju\u017c pewne wyobra\u017cenie o Jenkins i GitLab CI\/CD. Aby jeszcze lepiej pozna\u0107 te narz\u0119dzia, rozwa\u017cmy ich mocne i s\u0142abe strony. Mamy nadziej\u0119, \u017ce ju\u017c podj\u0105\u0142e\u015b decyzj\u0119 o tym, kt\u00f3re narz\u0119dzie jest Ci potrzebne. Mamy nadziej\u0119, \u017ce ta sekcja pozwoli Ci sprawdzi\u0107 si\u0119.<\/p>\n<h3>\u258dMocne strony Jenkins<\/h3>\n<p><\/p>\n<ul>\n<li>Du\u017ca liczba wtyczek.<\/li>\n<li>Pe\u0142na kontrola nad instalacj\u0105 narz\u0119dzia.<\/li>\n<li>\u0141atwe debugowanie runner\u00f3w.<\/li>\n<li>\u0141atwa konfiguracja w\u0119z\u0142\u00f3w.<\/li>\n<li>Proste wdro\u017cenie kodu.<\/li>\n<li>Bardzo dobry system zarz\u0105dzania danymi.<\/li>\n<li>Elastyczno\u015b\u0107 i uniwersalno\u015b\u0107.<\/li>\n<li>Wsparcie dla r\u00f3\u017cnych j\u0119zyk\u00f3w programowania.<\/li>\n<li>System jest intuicyjny w obs\u0142udze.<\/li>\n<\/ul>\n<p><\/p>\n<h3>\u258dS\u0142abe strony Jenkins<\/h3>\n<p><\/p>\n<ul>\n<li>Mo\u017cliwe s\u0105 trudno\u015bci podczas korzystania z wtyczek.<\/li>\n<li>W przypadku ma\u0142ych projekt\u00f3w czas potrzebny na samodzieln\u0105 konfiguracj\u0119 Jenkins mo\u017ce by\u0107 nieproporcjonalnie du\u017cy.<\/li>\n<li>Brak og\u00f3lnych informacji analitycznych dotycz\u0105cych \u0142a\u0144cuch\u00f3w CI\/CD.<\/li>\n<\/ul>\n<p><\/p>\n<h3>\u258dMocne strony GitLab CI\/CD<\/h3>\n<p><\/p>\n<ul>\n<li>Dobra integracja z Docker.<\/li>\n<li>Proste skalowanie runner\u00f3w.<\/li>\n<li>R\u00f3wnoleg\u0142e wykonywanie zada\u0144 w ramach etap\u00f3w pipeline'u CI\/CD.<\/li>\n<li>U\u017cycie modelu skierowanego acyklicznego grafu do konfigurowania relacji mi\u0119dzy zadaniami.<\/li>\n<li>Wysoki poziom skalowalno\u015bci dzi\u0119ki mo\u017cliwo\u015bci r\u00f3wnoleg\u0142ego wykonywania runner\u00f3w.<\/li>\n<li>\u0141atwo\u015b\u0107 dodawania zada\u0144.<\/li>\n<li>Proste rozwi\u0105zywanie konflikt\u00f3w.<\/li>\n<li>Solidny system bezpiecze\u0144stwa.<\/li>\n<\/ul>\n<p><\/p>\n<h3>\u258dS\u0142abe strony GitLab CI\/CD<\/h3>\n<p><\/p>\n<ul>\n<li>Dla ka\u017cdego zadania nale\u017cy opisa\u0107 i za\u0142adowa\u0107\/wyeksportowa\u0107 artefakty.<\/li>\n<li>Nie mo\u017cna przetestowa\u0107 wynik\u00f3w scalania ga\u0142\u0119zi przed ich faktycznym scaleniem.<\/li>\n<li>Podczas opisywania etap\u00f3w pipeline'u CI\/CD nie mo\u017cna jeszcze wyr\u00f3\u017cnia\u0107 poszczeg\u00f3lnych faz.<\/li>\n<\/ul>\n<p><\/p>\n<h2>Podsumowanie<\/h2>\n<p>\nZar\u00f3wno Jenkins, jak i GitLab CI\/CD maj\u0105 mocne i s\u0142abe strony. Odpowied\u017a na pytanie, co wybra\u0107, zale\u017cy od potrzeb i szczeg\u00f3lnych cech danego projektu. Ka\u017cde z omawianych dzisiaj narz\u0119dzi CI\/CD ma swoje unikalne cechy, chocia\u017c zosta\u0142y stworzone w tym samym celu. Jenkins jest narz\u0119dziem autonomicznym, podczas gdy GitLab CI\/CD jest cz\u0119\u015bci\u0105 platformy do wsp\u00f3\u0142pracy nad kodem.<\/p>\n<p>Wybieraj\u0105c system CI\/CD, warto opr\u00f3cz mo\u017cliwo\u015bci uwzgl\u0119dni\u0107 tak\u017ce zwi\u0105zane z nim koszty oraz to, z czym pracuj\u0105 DevOps in\u017cynierowie wspieraj\u0105cy projekt.<\/p>\n<p>Jakich narz\u0119dzi CI\/CD u\u017cywasz?<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"http:\/\/ruvds.com\/ru-rub?utm_source=habr&amp;utm_medium=article&amp;utm_campaign=perevod&amp;utm_content=bitva_jenkins_i_gitlab_ci_cd#order\"><img decoding=\"async\" alt=\"Bitwa pomi\u0119dzy Jenkins a GitLab CI\/CD\" src=\"\/wp-content\/uploads\/2020\/10\/cc25a9353b43773d11028a7a2caf96f1.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"http:\/\/ruvds.com\/ru-rub\/news\/read\/123?utm_source=habr&amp;utm_medium=article&amp;utm_campaign=perevod&amp;utm_content=bitva_jenkins_i_gitlab_ci_cd\"><img decoding=\"async\" alt=\"Bitwa pomi\u0119dzy Jenkins a GitLab CI\/CD\" src=\"\/wp-content\/uploads\/2020\/10\/efaafe7301c2f6a2fb00a22e7a0fa41a.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><br \/>\n<br \/>\u0179r\u00f3d\u0142o: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/ruvds\/blog\/522334\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u0434\u0435\u0441\u044f\u0442\u0438\u043b\u0435\u0442\u0438\u0435 \u0434\u043e\u0441\u0442\u0438\u0433\u043d\u0443\u0442\u044b \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0443\u0441\u043f\u0435\u0445\u0438 \u0432 \u0441\u0444\u0435\u0440\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e\u0439 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 (Continuous Integration, CI) \u0438 \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0432\u0451\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f (Continuous Delivery, CD). \u0420\u0430\u0437\u0432\u0438\u0442\u0438\u0435 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0439 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438 \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 \u041f\u041e (Development Operations, DevOps) \u043f\u0440\u0438\u0432\u0435\u043b\u043e \u043a \u0431\u044b\u0441\u0442\u0440\u043e\u043c\u0443 \u0440\u043e\u0441\u0442\u0443 \u0441\u043f\u0440\u043e\u0441\u0430 \u043d\u0430 CI\/CD-\u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b. \u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u0443\u043b\u0443\u0447\u0448\u0430\u044e\u0442\u0441\u044f, \u0441\u0442\u0440\u0435\u043c\u044f\u0441\u044c \u0438\u0434\u0442\u0438 \u0432 \u043d\u043e\u0433\u0443 \u0441\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c, \u0432\u044b\u0445\u043e\u0434\u044f\u0442 \u0438\u0445 \u043d\u043e\u0432\u044b\u0435 \u0432\u0435\u0440\u0441\u0438\u0438, \u0432 \u043c\u0438\u0440\u0435 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":96162,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-96161","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u0434\u0435\u0441\u044f\u0442\u0438\u043b\u0435\u0442\u0438\u0435 \u0434\u043e\u0441\u0442\u0438\u0433\u043d\u0443\u0442\u044b \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0443\u0441\u043f\u0435\u0445\u0438 \u0432 \u0441\u0444\u0435\u0440\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e\u0439 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 (Continuous Integration, CI) \u0438 \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0432\u0451\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f (Continuous Delivery, CD).\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/bitva-jenkins-i-gitlab-ci-cd\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"pl_PL\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0411\u0438\u0442\u0432\u0430 Jenkins \u0438 GitLab CI\/CD | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u0434\u0435\u0441\u044f\u0442\u0438\u043b\u0435\u0442\u0438\u0435 \u0434\u043e\u0441\u0442\u0438\u0433\u043d\u0443\u0442\u044b \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0443\u0441\u043f\u0435\u0445\u0438 \u0432 \u0441\u0444\u0435\u0440\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e\u0439 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 (Continuous Integration, CI) \u0438 \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0432\u0451\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f (Continuous Delivery, CD).\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/bitva-jenkins-i-gitlab-ci-cd\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-10-08T17:42:48+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-10-08T17:42:48+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Bitwa Jenkins i GitLab CI\/CD | ProHoster","description":"W ostatniej dekadzie osi\u0105gni\u0119to znacz\u0105ce post\u0119py w rozwoju narz\u0119dzi do ci\u0105g\u0142ej integracji (Continuous Integration, CI) oraz ci\u0105g\u0142ego wdra\u017cania (Continuous Delivery, CD).","canonical_url":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/bitva-jenkins-i-gitlab-ci-cd","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pl_PL","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0411\u0438\u0442\u0432\u0430 Jenkins \u0438 GitLab CI\/CD | ProHoster","og:description":"\u0412 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u0434\u0435\u0441\u044f\u0442\u0438\u043b\u0435\u0442\u0438\u0435 \u0434\u043e\u0441\u0442\u0438\u0433\u043d\u0443\u0442\u044b \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0443\u0441\u043f\u0435\u0445\u0438 \u0432 \u0441\u0444\u0435\u0440\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e\u0439 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 (Continuous Integration, CI) \u0438 \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0432\u0451\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f (Continuous Delivery, CD).","og:url":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/bitva-jenkins-i-gitlab-ci-cd","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-10-08T17:42:48+00:00","article:modified_time":"2020-10-08T17:42:48+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"96161","title":null,"description":null,"keywords":null,"keyphrases":{"focus":[],"additional":[]},"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 10:51:00","updated":"2026-08-11 12:50:09","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/96161","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/comments?post=96161"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/96161\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media\/96162"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media?parent=96161"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/categories?post=96161"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/tags?post=96161"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}