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.
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
Misol uchun, G2 platformasi ma'lumotlarini olaylik, unda turli xil mahsulotlarning sharhlari va foydalanuvchilar ularga bergan reytinglari to'planadi. Mana o'rtacha reyting
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.
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 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
β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
β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.
β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
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?
Manba: www.habr.com