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.
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ž
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í
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.
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
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ě
▍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
▍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.
▍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
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?
Zdroj: www.habr.com