Bitva o Jenkins a GitLab CI/CD

V posledním desetiletí došlo k výraznému pokroku ve vývoji nástrojů pro kontinuální integraci (Continuous Integration, CI) a kontinuální nasazení (Continuous Delivery, CD). Vývoj technologií pro integraci vývoje a provozu softwaru (Development Operations, DevOps) vedl k rychlému nárůstu poptávky po nástrojích CI/CD. Stávající řešení jsou neustále vylepšována, snaží se jít s dobou, vycházejí jejich nové verze, ve světě softwaru pro zajištění kvality (Quality Assurance, QA) se neustále objevuje mnoho nových produktů. S tak bohatým výběrem není výběr správného nástroje snadný úkol.

Bitva o Jenkins a GitLab CI/CD

Mezi všemi existujícími nástroji CI / CD jsou dva projekty, které rozhodně stojí za pozornost někomu, kdo hledá něco z této oblasti. Řeč je o Jenkinsovi a nástroji GitLab CI / CD, který je součástí platformy GitLab. Jenkins má více než 16000 hvězdy na GitHubu. Repozitář GitLab na gitlab.com zabodoval o něco více 2000 hvězdy. Pokud porovnáme oblíbenost repozitářů, ukáže se, že Jenkins získal 8krát více hvězdiček než platforma, která zahrnuje GitLab CI / CD. Ale při výběru nástroje CI / CD to není zdaleka jediný ukazatel, kterému byste měli věnovat pozornost. Existuje spousta dalších, a to vysvětluje, proč v mnoha srovnáních mají Jenkins a GitLab CI / CD velmi blízko k sobě.

Vezměte si například data z platformy G2, která shromažďuje recenze nejrůznějších produktů a hodnocení, která jim uživatelé dávají. Zde je průměrné hodnocení Jenkins, na základě 288 recenzí, je 4,3 hvězdičky. OH oh GitLab existuje 270 recenzí, průměrné hodnocení tohoto nástroje je 4,4 hvězdičky. Nebudeme se mýlit, když řekneme, že Jenkins a GitLab CI / CD spolu soutěží za stejných podmínek. Zajímavostí je, že projekt Jenkins se objevil v roce 2011 a od té doby je oblíbeným nástrojem testerů. Zároveň však projekt GitLab CI / CD, spuštěný v roce 2014, zaujal svou pozici, velmi vysokou, díky pokročilým funkcím, které tato platforma nabízí.

Pokud mluvíme o popularitě Jenkins ve srovnání s jinými podobnými platformami, poznamenáváme, že jsme po zveřejnění článku porovnávajícího platformy Travis CI a Jenkins uspořádali průzkum. Zúčastnilo se ho 85 uživatelů. Respondenti byli požádáni, aby vybrali nástroj CI/CD, který se jim nejvíce líbí. 79 % zvolilo Jenkins, 5 % zvolilo Travis CI a 16 % uvedlo, že preferují jiné nástroje.

Bitva o Jenkins a GitLab CI/CD
Výsledky hlasování

Z dalších CI/CD nástrojů byl nejčastěji zmiňován GitLab CI/CD.

Pokud to s DevOps myslíte vážně, pak musíte pečlivě vybrat vhodné nástroje s ohledem na specifika projektu, jeho rozpočet a další požadavky. Abychom vám pomohli udělat správnou volbu, zkontrolujeme Jenkins a GitLab CI/CD. Snad vám to pomůže se správným výběrem.

Úvod do Jenkinse

Bitva o Jenkins a GitLab CI/CD
Jenkins je dobře známý, flexibilní nástroj CI/CD určený k automatizaci mnoha úloh souvisejících se softwarovými projekty. Jenkins je napsán výhradně v Javě a je vydán pod licencí MIT. Má výkonnou sadu funkcí zaměřenou na automatizaci úloh spojených s vytvářením, testováním, nasazováním, integrací a vydáváním softwaru. Tento nástroj lze použít v různých operačních systémech. Patří mezi ně macOS, Windows a mnoho distribucí Linuxu, jako je OpenSUSE, Ubuntu a Red Hat. Existují instalační balíčky pro Jenkins určené pro různé OS, tento nástroj lze nainstalovat na Docker a na jakýkoli systém, který má JRE (Java Runtime Environment).

Vývojáři Jenkins vytvořili další projekt, Jenkins X, který je navržen pro práci v prostředí Kubernetes. Jenkins X integruje Helm, Jenkins CI/CD Server, Kubernetes a další nástroje k vytváření kanálů CI/CD, které se řídí osvědčenými postupy DevOps. Používá se zde například GitOps.

Do pokladnice výhod Jenkinse lze přidat fakt, že jeho skripty jsou velmi dobře strukturované, srozumitelné a snadno čitelné. Tým Jenkins vytvořil asi 1000 pluginů, které jsou zaměřeny na organizaci interakce Jenkins s širokou škálou technologií. Skripty mohou využívat autentizační systémy, což například umožňuje napojení na různé uzavřené systémy.

Během provozu ropovodu Jenkins můžete sledovat, co se děje v každém kroku, zda byly určité fáze práce dokončeny úspěšně nebo ne. To vše však můžete sledovat bez použití určitého grafického rozhraní, ale s využitím možností terminálu.

Vlastnosti Jenkinse

Mezi dobře známé funkce Jenkins patří snadné nastavení, vysoká úroveň automatizace různých operací a vynikající dokumentace. Pokud mluvíme o řešení úloh DevOps, pak je zde Jenkins považován za velmi spolehlivý nástroj, pomocí kterého zpravidla nemá smysl pečlivě sledovat celý proces zpracování projektu. To není případ jiných nástrojů CI/CD. Pojďme si promluvit o některých nejdůležitějších funkcích Jenkins.

▍1. Zdarma, open source, multiplatformní podpora

Jenkins může běžet na platformách MacOS, Windows a Linux. Může také fungovat v prostředí Docker, které umožňuje organizovat jednotné a rychlé provádění automatizovaných úkolů. Tento nástroj lze také spustit jako servlet v kontejnerech s podporou Java, jako jsou Apache Tomcat a GlassFish. Instalace Jenkins kvalitativně zdokumentováno.

▍2. Vyvinutý ekosystém pluginů

Ekosystém zásuvných modulů Jenkins se zdá být mnohem vyspělejší než ekosystémy zásuvných modulů jiných nástrojů CI/CD. V současné době existuje více než 1500 pluginů pro Jenkins. Tyto pluginy jsou zaměřeny na řešení široké škály úloh, s jejich pomocí můžete automatizovat nejrůznější projekty. Bohatství bezplatných pluginů na výběr znamená, že pokud používáte Jenkins, nemusíte kupovat drahé placené pluginy. Je zde možnost integrace Jenkins s mnoha nástroji DevOps.

▍3. Snadná instalace a nastavení

Jenkins se poměrně snadno instaluje a konfiguruje. Zároveň je proces aktualizace systému také velmi pohodlný. Zde opět stojí za zmínku kvalita dokumentace, protože v ní můžete najít odpovědi na různé otázky související s instalací a konfigurací Jenkins.

▍4. Přátelská komunita

Jak již bylo řečeno, Jenkins je open source projekt, jehož ekosystém zahrnuje obrovské množství pluginů. Kolem Jenkinse se vyvinula velká komunita uživatelů a vývojářů, aby pomohli s vývojem projektu. Komunita je jedním z faktorů, které řídí vývoj Jenkins.

▍5. Dostupnost REST API

Při práci s Jenkinsem můžete využít REST API, které rozšiřuje možnosti systému. API pro vzdálený přístup do systému je prezentováno ve třech verzích: XML, JSON s podporou JSONP, Python. zde je Stránka dokumentace obsahující podrobnosti o práci s Jenkins REST API.

▍6. Podpora paralelního provádění úloh

Jenkins podporuje paralelizaci úloh DevOps. Lze jej snadno integrovat s příslušnými nástroji a přijímat upozornění o výsledcích úkolů. Testování kódu lze urychlit uspořádáním paralelního sestavení projektu pomocí různých virtuálních strojů.

▍7. Podpora pro práci v distribuovaných prostředích

Jenkins vám umožňuje organizovat distribuovaná sestavení pomocí více počítačů. Tato funkce je použitelná ve velkých projektech a využívá schéma práce, podle které existuje jeden master Jenkins server a několik slave strojů. Slave stroje lze využít i v situacích, kdy je potřeba organizovat testování projektu v různých prostředích. Tyto vlastnosti odlišují Jenkinse od jiných podobných projektů.

Úvod do GitLabu

Bitva o Jenkins a GitLab CI/CD
GitLab CI/CD lze nazvat jedním z nejnovějších a nejoblíbenějších nástrojů DevOps. Tento bezplatný open source nástroj je zabudován do systému správy verzí GitLab. Platforma GitLab má komunitní verzi, podporuje správu úložišť, nástroje pro sledování problémů, organizaci kontroly kódu, mechanismy orientované na dokumentaci. Společnosti mohou nainstalovat GitLab lokálně a propojit jej se servery Active Directory a LDAP pro bezpečnou autorizaci a ověřování uživatelů.

zde je Video tutoriál, který vám pomůže naučit se vytvářet kanály CI/CD pomocí funkcí GitLab CI/CD.

GitLab CI/CD byl původně vydán jako samostatný projekt, ale v roce 2015 byla tato sada nástrojů integrována do GitLab 8.0. Jediný server GitLab CI/CD může podporovat více než 25000 XNUMX uživatelů. Na základě takových serverů můžete vytvářet systémy, které jsou vysoce dostupné.

GitLab CI/CD a hlavní projekt GitLab jsou napsány v Ruby and Go. Jsou vydány pod licencí MIT. GitLab CI/CD kromě běžných funkcí nástrojů CI/CD podporuje také další funkce související například s plánováním práce.

Integrace GitLab CI/CD do projektu je velmi snadná. Při použití GitLab CI/CD je proces zpracování kódu projektu rozdělen do fází, z nichž každá se může skládat z několika úloh prováděných v určitém pořadí. Úkoly lze doladit.

Úkoly mohou běžet paralelně. Po nastavení sekvence fází a úkolů je potrubí CI/CD připraveno k použití. Jeho průběh můžete sledovat sledováním stavu úkolů. Ve výsledku je používání GitLab CI / CD velmi pohodlné, možná pohodlnější než jiné podobné nástroje.

Vlastnosti GitLab CI/CD a GitLab

GitLab CI/CD je jedním z nejpopulárnějších nástrojů DevOps. Projekt se vyznačuje vysoce kvalitní dokumentací, jeho funkce jsou snadné a pohodlné. Pokud ještě neznáte GitLab CI/CD, následující seznam funkcí tohoto nástroje vám poskytne obecnou představu o tom, co od něj můžete očekávat. Je třeba poznamenat, že mnoho z těchto funkcí souvisí se samotnou platformou GitLab, ve které je GitLab CI / CD integrován.

▍1. Popularita

GitLab CI/CD je relativně nový nástroj, který našel široké využití. GitLab CI/CD se pomalu stal velmi oblíbeným nástrojem CI/CD používaným pro automatizované testování a nasazení softwaru. Jeho nastavení je jednoduché. Je to také bezplatný nástroj CI/CD zabudovaný do platformy GitLab.

▍2. Podpora pro GitLab Pages a Jekyll

Jekyll je generátor statických stránek, který lze použít v rámci systému GitLab Pages k vytváření webů založených na repozitářích GitLab. Systém vezme zdrojové materiály a na jejich základě vygeneruje hotové statické stránky. Úpravou souboru můžete ovládat vzhled a funkce takových stránek _config.yml, kterou používá Jekyll.

▍3. Možnosti plánování projektů

Díky možnosti plánovat fáze projektů se zvyšuje pohodlí při sledování problémů a jejich skupin. To umožňuje řídit organizaci práce na projektech, plánovat jejich realizaci k určitému datu.

▍4. Automatické škálování CI běžců

Díky automatickému škálování runnerů odpovědných za provádění konkrétních úkolů můžete hodně ušetřit na nákladech za pronájem kapacit serveru. To je velmi důležité, zejména pokud jde o prostředí, kde se projekty testují paralelně. To je navíc důležité u velkých projektů skládajících se z několika úložišť.

▍5. Nástroje pro sledování problémů

Výkonné funkce GitLab pro sledování problémů vedly k používání této platformy mnoha open source projektům. GitLab CI/CD umožňuje paralelní testování různých větví kódu. Výsledky testů jsou pohodlně analyzovány v systémovém rozhraní. To odlišuje GitLab CI/CD od Jenkinse.

▍6. Omezení přístupu k úložištím

Platforma GitLab podporuje omezení přístupu k úložištím. Například těm, kteří spolupracují na projektu v úložišti, lze přidělit oprávnění odpovídající jejich rolím. To platí zejména pro firemní projekty.

▍7. Aktivní podpora komunity

Kolem GitLabu se rozvinula aktivní komunita, která přispívá k rozvoji této platformy a jejích nástrojů, zejména GitLab CI/CD. Hluboká integrace GitLab CI/CD a GitLab mimo jiné usnadňuje hledání odpovědí na otázky, které vyvstávají při práci s GitLab CI/CD.

▍8. Podpora různých systémů správy verzí

GitLab CI/CD je systém, který dokáže pracovat s více než jen kódem hostovaným v repozitářích GitLab. Kód může být například uložen v úložišti GitHub a kanál CI/CD lze organizovat na základě GitLab pomocí GitLab CI/CD.

Srovnání Jenkins a GitLab CI/CD

Jenkins a GitLab CI/CD jsou velmi dobré nástroje, oba jsou schopny zajistit hladký chod potrubí CI/CD. Když je ale porovnáte, ukáže se, že ačkoli jsou si v mnoha ohledech podobné, v něčem se od sebe liší.

Charakterizace
Jenkins
GitLab CI/CD

Open source nebo uzavřený zdroj
open source
open source

Instalace
Požadované.
Není vyžadováno, protože se jedná o integrovanou funkci platformy GitLab.

Unikátní funkce
Podpora pluginů.
Hluboká integrace do systému správy verzí.

Podpora
Chybí.
Dostupný.

Instalace a konfigurace
Obtíže nezpůsobují
Obtíže nezpůsobují

Vlastní nasazení systému
Toto je jediný způsob použití systému.
Podporováno.

Vytváření CI/CD potrubí
Podporováno pomocí Jenkins Pipeline.
Podporováno.

Monitorování výkonu aplikací
Chybí.
Dostupný.

Ekosystém
Existuje více než 1000 pluginů.
Systém je vyvíjen v rámci GitLabu.

API
Podporuje pokročilý systém API.
Nabízí API pro hlubší integraci do projektů.

podpora JavaScriptu
Dostupný.
Dostupný.

Integrace s dalšími nástroji
Podporována je integrace s dalšími nástroji a platformami (Slack, GitHub).
Mnoho nástrojů pro integraci se systémy třetích stran, zejména - s GitHub a Kubernetes.

Kontrola kvality kódu
Podporováno – pomocí pluginu SonarQube a dalších pluginů.
Podporováno.

Rozdíly mezi Jenkinsem a GitLab CI/CD

Poté, co jsme popsali a porovnali Jenkins a GitLab CI/CD, zaměřme se na rozdíly mezi těmito nástroji DevOps. Znalost těchto rozdílů vám pomůže porozumět těm, kteří preferují jeden z těchto nástrojů před druhým.

  • GitLab CI/CD může plně ovládat úložiště Git. Mluvíme o správě větví úložiště a některých dalších funkcích. Ale Jenkins, i když umí pracovat s repozitáři, neposkytuje nad nimi stejnou úroveň kontroly jako GitLab CI / CD.
  • Jenkins je bezplatný open source projekt. Ten, kdo si ji vybere, ji nasadí samostatně. A GitLab CI / CD je součástí platformy GitLab, jedná se o řešení na klíč.
  • GitLab CI/CD podporuje pokročilé nástroje pro správu úloh, které fungují na úrovni projektu. Tato stránka Jenkinse je méně rozvinutá.

Jenkins a GitLab CI/CD: silné a slabé stránky

Nyní máte nějakou představu o Jenkinsovi a GitLab CI/CD. Abyste se s těmito nástroji ještě lépe seznámili, pojďme se nyní podívat na jejich silné a slabé stránky. Předpokládáme, že jste se již rozhodli, který nástroj potřebujete. Doufejme, že vám tato sekce umožní otestovat se.

▍ Silné stránky Jenkinse

  • Velké množství pluginů.
  • Plná kontrola nad instalací nástroje.
  • Jednoduché ladění běžců.
  • Snadné nastavení uzlu.
  • Snadné nasazení kódu.
  • Velmi dobrý systém správy pověření.
  • Flexibilita a všestrannost.
  • Podpora různých programovacích jazyků.
  • Systém je srozumitelný na intuitivní úrovni.

▍Slabosti Jenkinse

  • Použití pluginů může být složité.
  • Při použití Jenkins v malých projektech může být čas potřebný k vlastní konfiguraci nepřiměřeně dlouhý.
  • Nedostatek obecných analytických informací o řetězcích CI/CD.

▍ Přednosti GitLab CI/CD

  • Dobrá integrace s Dockerem.
  • Jednoduché škálování běžců.
  • Paralelní provádění úloh, které jsou součástí fází pipeline CI/CD.
  • Použití modelu orientovaného acyklického grafu při nastavování vztahů mezi úlohami.
  • Vysoká úroveň škálovatelnosti díky možnosti paralelního provádění běžců.
  • Snadné přidávání úkolů.
  • Jednoduché řešení konfliktů.
  • Spolehlivý bezpečnostní systém.

▍Slabé stránky GitLab CI/CD

  • Pro každý úkol musíte popsat a nahrát / stáhnout artefakty.
  • Nemůžete testovat výsledky sloučení větví, dokud nebudou skutečně sloučeny.
  • Při popisu etap potrubí CI / CD v nich zatím nelze vyčlenit jednotlivé etapy.

Výsledky

Jenkins i GitLab CI/CD mají silné a slabé stránky. Odpověď na otázku, co si vybrat, závisí na potřebách a vlastnostech konkrétního projektu. Každý z dnes recenzovaných nástrojů CI/CD má určité funkce, ačkoli tyto nástroje byly vytvořeny k vyřešení stejného problému. Jenkins je zároveň samostatný nástroj a GitLab CI / CD je součástí platformy určené pro spolupráci na kódu.

Při výběru CI / CD systému se kromě jeho schopností vyplatí vzít v úvahu náklady, které s ním mohou být spojeny, a s čím přesně jsou inženýři DevOps, kteří projekt podporují, zvyklí pracovat.

Jaké nástroje CI/CD používáte?

Bitva o Jenkins a GitLab CI/CD

Bitva o Jenkins a GitLab CI/CD

Zdroj: www.habr.com

Přidat komentář