Jenkins jangi va GitLab CI/CD

So'nggi o'n yillikda uzluksiz integratsiya (Continuous Integration, CI) va uzluksiz joylashtirish (Continuous Delivery, CD) vositalarini ishlab chiqishda sezilarli yutuqlarga erishildi. Dasturiy ta'minotni ishlab chiqish va foydalanishni integratsiyalash texnologiyalarining rivojlanishi (Development Operations, DevOps) CI / CD vositalariga talabning tez o'sishiga olib keldi. Mavjud yechimlar doimo takomillashtirilib, zamon bilan hamnafas bo'lishga harakat qilmoqda, ularning yangi versiyalari chiqarilmoqda, sifatni ta'minlash dasturi dunyosida (Quality Assurance, QA), ko'plab yangi mahsulotlar doimiy ravishda paydo bo'ladi. Tanlovning bunday boyligi bilan to'g'ri vositani tanlash oson ish emas.

Jenkins jangi va GitLab CI/CD

Mavjud barcha CI / CD vositalari orasida ushbu sohadan biror narsa qidirayotgan kishiga e'tibor berishga arziydigan ikkita loyiha mavjud. Gap Jenkins va GitLab platformasining bir qismi bo'lgan GitLab CI/CD vositasi haqida bormoqda. Jenkins ko'proq narsaga ega 16000 GitHubdagi yulduzlar. Gitlab.com saytidagi GitLab ombori biroz ko'proq ball to'pladi 2000 yulduzlar. Agar biz omborlarning mashhurligini solishtiradigan bo'lsak, Jenkins GitLab CI / CD o'z ichiga olgan platformadan 8 baravar ko'proq yulduz to'plaganligi ma'lum bo'ladi. Ammo CI / CD vositasini tanlashda bu siz e'tibor berishingiz kerak bo'lgan yagona ko'rsatkichdan uzoqdir. Boshqalar juda ko'p va bu ko'plab taqqoslashlarda Jenkins va GitLab CI / CD bir-biriga juda yaqin ekanligini tushuntiradi.

Misol uchun, G2 platformasi ma'lumotlarini olaylik, unda turli xil mahsulotlarning sharhlari va foydalanuvchilar ularga bergan reytinglari to'planadi. Mana o'rtacha reyting Jenkins, 288 ta sharhga asoslanib, 4,3 yulduz. Oh oh GitLab 270 ta sharh bor, ushbu vosita uchun o'rtacha reyting 4,4 yulduz. Jenkins va GitLab CI / CD bir-biri bilan teng sharoitlarda raqobatlashadi, desak xato qilmaymiz. Shunisi qiziqki, Jenkins loyihasi 2011 yilda paydo bo'lgan va o'shandan beri u testerlar uchun sevimli vosita bo'lib kelgan. Shu bilan birga, 2014 yilda boshlangan GitLab CI / CD loyihasi ushbu platforma tomonidan taqdim etilgan ilg'or xususiyatlar tufayli juda yuqori o'rinni egalladi.

Agar biz Jenkins-ning boshqa shunga o'xshash platformalar bilan taqqoslaganda mashhurligi haqida gapiradigan bo'lsak, biz Travis CI va Jenkins platformalarini taqqoslaydigan maqola chop etib, so'rov o'tkazganimizni ta'kidlaymiz. Unda 85 nafar foydalanuvchi ishtirok etdi. Respondentlardan o'zlari yoqtirgan CI/CD vositasini tanlash so'ralgan. 79% Jenkinsni, 5% Travis CI ni tanladi va 16% boshqa vositalarni afzal ko'rishini ko'rsatdi.

Jenkins jangi va GitLab CI/CD
So'rov natijalarini ko'rish

Boshqa CI/CD vositalari orasida GitLab CI/CD ko'pincha tilga olinadi.

Agar siz DevOps bilan jiddiy shug'ullansangiz, loyihaning o'ziga xosligini, uning byudjetini va boshqa talablarni hisobga olgan holda tegishli vositalarni diqqat bilan tanlashingiz kerak. To'g'ri tanlov qilishingizga yordam berish uchun biz Jenkins va GitLab CI/CD-ni ko'rib chiqamiz. Umid qilamanki, bu sizga to'g'ri tanlov qilishga yordam beradi.

Jenkins bilan tanishtirish

Jenkins jangi va GitLab CI/CD
Jenkins dasturiy ta'minot loyihalari bilan bog'liq ko'plab vazifalarni avtomatlashtirish uchun mo'ljallangan taniqli, moslashuvchan CI/CD vositasidir. Jenkins butunlay Java-da yozilgan va MIT litsenziyasi ostida chiqarilgan. U dasturiy ta'minotni yaratish, sinovdan o'tkazish, joylashtirish, integratsiya qilish va chiqarish bilan bog'liq vazifalarni avtomatlashtirishga qaratilgan kuchli funktsiyalar to'plamiga ega. Ushbu vosita turli xil operatsion tizimlarda ishlatilishi mumkin. Bularga macOS, Windows va OpenSUSE, Ubuntu va Red Hat kabi ko'plab Linux distributivlari kiradi. Jenkins uchun turli xil operatsion tizimlar uchun mo'ljallangan o'rnatish paketlari mavjud, bu vositani Docker va JRE (Java Runtime Environment) ga ega bo'lgan har qanday tizimga o'rnatish mumkin.

Jenkins ishlab chiquvchilari Kubernetes muhitida ishlashga mo'ljallangan yana bir Jenkins X loyihasini yaratdilar. Jenkins X Helm, Jenkins CI/CD Server, Kubernetes va DevOpsning eng yaxshi amaliyotlariga amal qiladigan CI/CD quvurlarini yaratish uchun boshqa vositalarni birlashtiradi. Masalan, bu erda GitOps ishlatiladi.

Jenkinsning afzalliklari xazinasiga uning skriptlari juda yaxshi tuzilgan, tushunarli va o'qish oson ekanligini qo'shish mumkin. Jenkins jamoasi Jenkinsning turli xil texnologiyalar bilan o'zaro ta'sirini tashkil etishga qaratilgan 1000 ga yaqin plaginlarni yaratdi. Skriptlar autentifikatsiya tizimlaridan foydalanishi mumkin, bu esa, masalan, turli xil yopiq tizimlarga ulanish imkonini beradi.

Jenkins quvurining ishlashi paytida siz har bir bosqichda nima sodir bo'lishini, ishning muayyan bosqichlari muvaffaqiyatli yakunlanganmi yoki yo'qligini kuzatishingiz mumkin. Biroq, bularning barchasini ma'lum bir grafik interfeysdan foydalanmasdan, balki terminalning imkoniyatlaridan foydalangan holda tomosha qilishingiz mumkin.

Jenkinsning xususiyatlari

Jenkinsning taniqli xususiyatlari orasida sozlashning qulayligi, turli operatsiyalarni avtomatlashtirishning yuqori darajasi va mukammal hujjatlar mavjud. Agar biz DevOps vazifalarini hal qilish haqida gapiradigan bo'lsak, bu erda Jenkins juda ishonchli vosita hisoblanadi, undan foydalanish, qoida tariqasida, loyihani qayta ishlashning butun jarayonini diqqat bilan kuzatib borishning ma'nosi yo'q. Boshqa CI/CD vositalarida bunday emas. Keling, Jenkinsning eng muhim xususiyatlari haqida gapiraylik.

▍1. Bepul, ochiq manba, ko'p platformali qo'llab-quvvatlash

Jenkins macOS, Windows va Linux platformalarida ishlashi mumkin. Shuningdek, u Docker muhitida ham ishlashi mumkin, bu sizga avtomatlashtirilgan topshiriqlarning bir xilda va tez bajarilishini tashkil qilish imkonini beradi. Ushbu vosita Apache Tomcat va GlassFish kabi Java bilan ishlaydigan konteynerlarda servlet sifatida ham ishlashi mumkin. Jenkinsni sifatli o'rnatish hujjatlashtirilgan.

▍2. Ishlab chiqilgan plagin ekotizimlari

Jenkins plaginlari ekotizimi boshqa CI/CD vositalarining plagin ekotizimlariga qaraganda ancha etukroq ko'rinadi. Hozirda Jenkins uchun 1500 dan ortiq plaginlar mavjud. Ushbu plaginlar keng ko'lamli vazifalarni hal qilishga qaratilgan bo'lib, ularning yordami bilan siz turli loyihalarni avtomatlashtirishingiz mumkin. Tanlash uchun bepul plaginlarning boyligi, agar siz Jenkins-dan foydalansangiz, qimmat pullik plaginlarni sotib olishingiz shart emasligini anglatadi. Imkoniyat bor integratsiya Jenkins ko'plab DevOps vositalariga ega.

▍3. Oson o'rnatish va sozlash

Jenkinsni o'rnatish va sozlash juda oson. Shu bilan birga, tizimni yangilash jarayoni ham juda qulay. Bu erda yana hujjatlarning sifatini eslatib o'tish kerak, chunki unda siz Jenkinsni o'rnatish va sozlash bilan bog'liq turli xil savollarga javob topishingiz mumkin.

▍4. Do'stona jamoa

Yuqorida aytib o'tilganidek, Jenkins ochiq kodli loyiha bo'lib, uning ekotizimiga juda ko'p plaginlar kiradi. Loyihani ishlab chiqishda yordam berish uchun Jenkins atrofida foydalanuvchilar va ishlab chiquvchilarning katta hamjamiyati yaratilgan. Jamiyat Jenkinsning rivojlanishiga turtki bo'lgan omillardan biridir.

▍5. REST API mavjudligi

Jenkins bilan ishlashda siz tizim imkoniyatlarini kengaytiruvchi REST API dan foydalanishingiz mumkin. Tizimga masofadan kirish uchun API uchta versiyada taqdim etilgan: XML, JSONP qo'llab-quvvatlanadigan JSON, Python. shu yerda Jenkins REST API bilan ishlash tafsilotlarini o'z ichiga olgan hujjat sahifasi.

▍6. Vazifalarning parallel bajarilishini qo'llab-quvvatlash

Jenkins DevOps vazifalarini parallellashtirishni qo'llab-quvvatlaydi. U tegishli vositalar bilan osongina birlashtirilishi va vazifalar natijalari haqida bildirishnomalarni olishi mumkin. Turli virtual mashinalar yordamida loyihaning parallel tuzilishini tashkil qilish orqali kod sinovini tezlashtirish mumkin.

▍7. Tarqalgan muhitda ishlashni qo'llab-quvvatlash

Jenkins bir nechta kompyuterlar yordamida taqsimlangan tuzilmalarni tashkil qilish imkonini beradi. Bu xususiyat yirik loyihalarda qo'llaniladi va ish sxemasidan foydalanadi, unga ko'ra bitta asosiy Jenkins serveri va bir nechta qul mashinalari mavjud. Qul mashinalar, shuningdek, loyihani turli muhitlarda sinovdan o'tkazishni tashkil qilish zarur bo'lgan holatlarda ham qo'llanilishi mumkin. Bu xususiyatlar Jenkinsni boshqa shunga o'xshash loyihalardan ajratib turadi.

GitLab ga kirish

Jenkins jangi va GitLab CI/CD
GitLab CI/CD eng yangi va eng sevimli DevOps vositalaridan biri deb atash mumkin. Ushbu bepul ochiq manbali vosita GitLab versiyasini boshqarish tizimiga o'rnatilgan. GitLab platformasi hamjamiyat versiyasiga ega, u omborlarni boshqarish, muammolarni kuzatish vositalari, kodlarni ko'rib chiqishni tashkil etish, hujjatlarga yo'naltirilgan mexanizmlarni qo'llab-quvvatlaydi. Kompaniyalar GitLab-ni xavfsiz foydalanuvchi avtorizatsiyasi va autentifikatsiyasi uchun Active Directory va LDAP serverlariga bog'lab, mahalliy sifatida o'rnatishi mumkin.

shu yerda GitLab CI/CD imkoniyatlaridan foydalangan holda CI/CD quvurlarini yaratishni oβ€˜rganishga yordam beradigan video dars.

GitLab CI/CD dastlab mustaqil loyiha sifatida chiqarilgan, ammo 2015 yilda ushbu vositalar to'plami GitLab 8.0 ga birlashtirilgan. Bitta GitLab CI/CD serveri 25000 XNUMX dan ortiq foydalanuvchilarni qo'llab-quvvatlashi mumkin. Bunday serverlar asosida siz yuqori darajada mavjud bo'lgan tizimlarni yaratishingiz mumkin.

GitLab CI/CD va asosiy GitLab loyihasi Ruby va Go-da yozilgan. Ular MIT litsenziyasi ostida ozod qilinadi. GitLab CI/CD, CI/CD vositalarining odatiy xususiyatlaridan tashqari, masalan, ishni rejalashtirish bilan bog'liq qo'shimcha funktsiyalarni ham qo'llab-quvvatlaydi.

GitLab CI/CD-ni loyihaga integratsiya qilish juda oson. GitLab CI/CD dan foydalanganda loyiha kodini qayta ishlash jarayoni bosqichlarga bo'linadi, ularning har biri ma'lum tartibda bajariladigan bir nechta vazifalardan iborat bo'lishi mumkin. Vazifalar nozik sozlanishi mumkin.

Vazifalar parallel ravishda bajarilishi mumkin. Bosqichlar va vazifalar ketma-ketligini o'rnatgandan so'ng, CI/CD quvur liniyasi ishlashga tayyor. Vazifalar holatini kuzatish orqali uning borishini kuzatishingiz mumkin. Natijada, GitLab CI / CD dan foydalanish juda qulay, ehtimol boshqa shunga o'xshash vositalarga qaraganda qulayroqdir.

GitLab CI/CD va GitLab xususiyatlari

GitLab CI/CD eng mashhur DevOps vositalaridan biridir. Loyiha yuqori sifatli hujjatlar bilan ajralib turadi, uning xususiyatlaridan foydalanish oson va qulay. Agar siz hali GitLab CI/CD bilan tanish bo'lmasangiz, ushbu vosita xususiyatlarining quyidagi ro'yxati sizga undan nimani kutishingiz mumkinligi haqida umumiy fikr beradi. Shuni ta'kidlash kerakki, ushbu xususiyatlarning aksariyati GitLab CI / CD integratsiyalangan GitLab platformasining o'zi bilan bog'liq.

▍1. Mashhurlik

GitLab CI/CD - bu nisbatan yangi vosita bo'lib, keng tarqalgan foydalanishni topdi. GitLab CI/CD asta-sekin avtomatlashtirilgan sinov va dasturiy ta'minotni joylashtirish uchun ishlatiladigan juda mashhur CI/CD vositasiga aylandi. Uni sozlash oson. Bu, shuningdek, GitLab platformasiga o'rnatilgan bepul CI/CD vositasidir.

▍2. GitLab sahifalari va Jekyll-ni qo'llab-quvvatlash

Jekyll - bu GitLab sahifalari tizimida GitLab omborlari asosida saytlarni yaratish uchun ishlatilishi mumkin bo'lgan statik sayt generatori. Tizim manba materiallarini oladi va ular asosida tayyor statik sayt yaratadi. Siz faylni tahrirlash orqali bunday saytlarning ko'rinishi va xususiyatlarini boshqarishingiz mumkin _config.yml, Jekyll tomonidan ishlatilgan.

▍3. Loyihani rejalashtirish imkoniyatlari

Loyihalarning bosqichlarini rejalashtirish qobiliyati tufayli muammolar va ularning guruhlarini kuzatish qulayligi ortadi. Bu sizga loyihalar bo'yicha ishlarni tashkil qilishni boshqarish, ularni amalga oshirishni ma'lum bir sanada rejalashtirish imkonini beradi.

▍4. CI yuguruvchilarni avtomatik masshtablash

Muayyan vazifalarni bajarish uchun mas'ul bo'lgan yuguruvchilarning avtomatik miqyosi tufayli siz server sig'imlarini ijaraga olish narxini sezilarli darajada tejashingiz mumkin. Bu, ayniqsa, loyihalar parallel ravishda sinovdan o'tkaziladigan muhitlarga kelganda juda muhimdir. Bundan tashqari, bu bir nechta omborlardan tashkil topgan yirik loyihalar uchun muhimdir.

▍5. Muammolarni kuzatish vositalari

GitLab-ning kuchli muammolarni kuzatish qobiliyati ko'plab ochiq kodli loyihalarni platformadan foydalanishga olib keldi. GitLab CI/CD turli xil kod tarmoqlarini parallel ravishda sinab ko'rish imkonini beradi. Sinov natijalari tizim interfeysida qulay tarzda tahlil qilinadi. Bu GitLab CI/CD-ni Jenkinsdan ajratib turadi.

▍6. Repozitariylarga kirishni cheklash

GitLab platformasi omborlarga kirishni cheklashni qo'llab-quvvatlaydi. Masalan, ombordagi loyihada hamkorlik qilayotganlarga ularning rollariga mos ruxsatlar berilishi mumkin. Bu, ayniqsa, korporativ loyihalar uchun to'g'ri keladi.

▍7. Jamiyatni faol qo'llab-quvvatlash

GitLab atrofida faol hamjamiyat paydo bo'ldi, bu ushbu platforma va uning vositalarini, xususan, GitLab CI / CDni rivojlantirishga hissa qo'shadi. GitLab CI/CD va GitLab ning chuqur integratsiyalashuvi, jumladan, GitLab CI/CD bilan ishlashda yuzaga keladigan savollarga javob topishni osonlashtiradi.

▍8. Turli versiyalarni boshqarish tizimlarini qo'llab-quvvatlash

GitLab CI/CD - bu GitLab omborlarida joylashgan kod bilan emas, balki ko'proq ishlay oladigan tizim. Masalan, kod GitHub omborida saqlanishi mumkin va CI/CD quvur liniyasi GitLab CI/CD yordamida GitLab asosida tashkil etilishi mumkin.

Jenkins va GitLab CI/CD ni solishtirish

Jenkins va GitLab CI/CD juda yaxshi vositalar bo'lib, ikkalasi ham CI/CD quvur liniyasini muammosiz ishlashiga qodir. Ammo ularni solishtirsangiz, ular ko'p jihatdan o'xshash bo'lsa-da, qaysidir jihatlari bilan bir-biridan farq qiladi.

ta'rif
Jenkins
GitLab CI/CD

Ochiq manba yoki yopiq manba
ochiq manba
ochiq manba

sozlama
Majburiy.
Bu GitLab platformasining o'rnatilgan xususiyati bo'lgani uchun shart emas.

Noyob xususiyatlar
Plaginni qo'llab-quvvatlash.
Versiyalarni boshqarish tizimiga chuqur integratsiya.

qo'llab-quvvatlash
Mavjud emas.
Mavjud.

O'rnatish va sozlash
Qiyinchiliklar sabab bo'lmaydi
Qiyinchiliklar sabab bo'lmaydi

Tizimni o'z-o'zidan joylashtirish
Bu tizimdan foydalanishning yagona yo'li.
Qo'llab-quvvatlanadi.

CI/CD quvurlarini yaratish
Jenkins Pipeline yordamida qo'llab-quvvatlanadi.
Qo'llab-quvvatlanadi.

Ilova ishlashi monitoringi
Mavjud emas.
Mavjud.

Ekosistema
1000 dan ortiq plaginlar mavjud.
Tizim GitLab doirasida ishlab chiqilmoqda.

API
Kengaytirilgan API tizimini qo'llab-quvvatlaydi.
Loyihalarga chuqurroq integratsiya qilish uchun API taklif qiladi.

JavaScript-ni qo'llab-quvvatlash
Mavjud.
Mavjud.

Boshqa vositalar bilan integratsiya
Boshqa vositalar va platformalar bilan integratsiya qo'llab-quvvatlanadi (Slack, GitHub).
Uchinchi tomon tizimlari bilan, xususan, GitHub va Kubernetes bilan integratsiya qilish uchun ko'plab vositalar.

Kod sifatini nazorat qilish
Qo'llab-quvvatlanadi - SonarQube plagini va boshqa plaginlar yordamida.
Qo'llab-quvvatlanadi.

Jenkins va GitLab CI/CD o'rtasidagi farqlar

Jenkins va GitLab CI/CD-ni tasvirlab, taqqoslab, keling, ushbu DevOps vositalari o'rtasidagi farqlarga e'tibor qarataylik. Ushbu farqlarni bilish sizga ushbu vositalardan birini boshqasidan afzal ko'rganlarni tushunishga yordam beradi.

  • GitLab CI/CD Git omborlarini to'liq boshqarishi mumkin. Biz ombor filiallarini boshqarish va boshqa ba'zi xususiyatlar haqida gapiramiz. Ammo Jenkins, garchi u omborlar bilan ishlashi mumkin bo'lsa-da, ular ustidan GitLab CI / CD kabi bir xil darajadagi nazoratni bermaydi.
  • Jenkins bepul ochiq kodli loyihadir. Uni tanlagan kishi uni mustaqil ravishda joylashtiradi. Va GitLab CI / CD GitLab platformasiga kiritilgan, bu kalit echimdir.
  • GitLab CI/CD loyiha darajasida ishlaydigan ilg'or vazifalarni boshqarish vositalarini qo'llab-quvvatlaydi. Jenkinsning bu tomoni kam rivojlangan.

Jenkins va GitLab CI/CD: kuchli va zaif tomonlari

Endi sizda Jenkins va GitLab CI/CD haqida bir oz tasavvuringiz bor. Endi sizni ushbu vositalar bilan yaxshiroq tanishtirish uchun ularning kuchli va zaif tomonlarini ko'rib chiqamiz. O'ylaymizki, siz allaqachon qaysi vositaga muhtoj ekanligingizni hal qildingiz. Umid qilamizki, ushbu bo'lim sizga o'zingizni sinab ko'rish imkonini beradi.

▍Jenkinsning kuchli tomonlari

  • Ko'p sonli plaginlar.
  • Asboblarni o'rnatish ustidan to'liq nazorat.
  • Yuguruvchilarni oddiy disk raskadrovka qilish.
  • Oson tugunni sozlash.
  • Oson kodni joylashtirish.
  • Juda yaxshi hisob ma'lumotlarini boshqarish tizimi.
  • Moslashuvchanlik va ko'p qirralilik.
  • Turli xil dasturlash tillarini qo'llab-quvvatlash.
  • Tizim intuitiv darajada tushunarli.

▍Jenkinsning zaif tomonlari

  • Plaginlardan foydalanish qiyin bo'lishi mumkin.
  • Jenkins-ni kichik loyihalarda ishlatganda, uni o'zingiz sozlash uchun zarur bo'lgan vaqt asossiz darajada katta bo'lishi mumkin.
  • CI/CD zanjirlari bo'yicha umumiy analitik ma'lumotlarning etishmasligi.

▍GitLab CI/CD ning kuchli tomonlari

  • Docker bilan yaxshi integratsiya.
  • Yuguruvchilarni oddiy masshtablash.
  • CI/CD quvur liniyasi bosqichlarining bir qismi bo'lgan vazifalarni parallel ravishda bajarish.
  • Vazifa munosabatlarini o'rnatishda yo'naltirilgan asiklik grafik modelidan foydalanish.
  • Yuguruvchilarni parallel ravishda bajarish imkoniyati tufayli yuqori miqyoslilik darajasi.
  • Vazifalarni qo'shish qulayligi.
  • Oddiy ziddiyatni hal qilish.
  • Ishonchli xavfsizlik tizimi.

▍GitLab CI/CD ning zaif tomonlari

  • Har bir vazifa uchun siz artefaktlarni tavsiflashingiz va yuklashingiz / yuklab olishingiz kerak.
  • Filiallarni birlashtirishdan oldin ularni birlashtirish natijalarini sinab ko'ra olmaysiz.
  • CI / CD quvurining bosqichlarini tavsiflashda ulardagi alohida bosqichlarni ajratib ko'rsatish hali mumkin emas.

natijalar

Jenkins ham, GitLab CI/CD ham kuchli va zaif tomonlariga ega. Nimani tanlash kerakligi haqidagi savolga javob ma'lum bir loyihaning ehtiyojlari va xususiyatlariga bog'liq. Bugungi kunda ko'rib chiqilgan CI/CD vositalarining har biri ma'lum xususiyatlarga ega, garchi bu vositalar bir xil muammoni hal qilish uchun yaratilgan. Shu bilan birga, Jenkins mustaqil vositadir va GitLab CI / CD kod ustida hamkorlik qilish uchun mo'ljallangan platformaning bir qismidir.

CI / CD tizimini tanlashda, uning imkoniyatlaridan tashqari, u bilan bog'liq bo'lishi mumkin bo'lgan xarajatlarni va loyihani qo'llab-quvvatlaydigan DevOps muhandislari nima bilan ishlashga odatlanganligini hisobga olish kerak.

Qaysi CI/CD vositalaridan foydalanasiz?

Jenkins jangi va GitLab CI/CD

Jenkins jangi va GitLab CI/CD

Manba: www.habr.com

a Izoh qo'shish