Jenkins döyüşü və GitLab CI/CD

Son onillikdə davamlı inteqrasiya (Continuous Integration, CI) və davamlı yerləşdirmə (Continuous Delivery, CD) üçün alətlərin hazırlanmasında əhəmiyyətli irəliləyişlər əldə edilmişdir. Proqram təminatının inkişafı və istismarının inteqrasiyası üçün texnologiyaların inkişafı (Development Operations, DevOps) CI / CD alətlərinə tələbatın sürətlə artmasına səbəb oldu. Mövcud həllər daim təkmilləşdirilir, zamanla ayaqlaşmağa çalışır, onların yeni versiyaları buraxılır, keyfiyyət təminatı proqramları dünyasında (Quality Assurance, QA), bir çox yeni məhsullar daim peyda olur. Belə bir seçim zənginliyi ilə düzgün alət seçmək asan məsələ deyil.

Jenkins döyüşü və GitLab CI/CD

Bütün mövcud CI / CD alətləri arasında, bu sahədən nəsə axtaran birinə mütləq diqqət yetirməyə dəyər olan iki layihə var. Söhbət Jenkins və GitLab platformasının bir hissəsi olan GitLab CI/CD alətindən gedir. Jenkins daha çox var 16000 GitHub-da ulduzlar. gitlab.com-dakı GitLab deposu bir az daha çox xal topladı 2000 ulduzlar. Repozitorların populyarlığını müqayisə etsək, məlum olur ki, Cenkins GitLab CI/CD-nin daxil olduğu platformadan 8 dəfə çox ulduz toplayıb. Ancaq bir CI / CD aləti seçərkən, bu diqqət etməli olduğunuz yeganə göstəricidən uzaqdır. Bir çox başqaları var və bu, bir çox müqayisələrdə Jenkins və GitLab CI / CD-nin bir-birinə çox yaxın olduğunu izah edir.

Məsələn, G2 platformasındakı məlumatları götürək, burada geniş çeşidli məhsullar haqqında rəylər və istifadəçilərin onlara verdiyi reytinqlər toplanır. Budur orta reytinq Jenkins, 288 rəyə əsasən, 4,3 ulduzdur. oh oh GitLab 270 rəy var, bu alət üçün orta reytinq 4,4 ulduzdur. Jenkins və GitLab CI/CD-nin bir-biri ilə bərabər şərtlərlə rəqabət apardığını desək, yanılmarıq. Maraqlıdır ki, Jenkins layihəsi 2011-ci ildə ortaya çıxdı və o vaxtdan bəri testçilər üçün sevimli alət oldu. Ancaq eyni zamanda, 2014-cü ildə istifadəyə verilmiş GitLab CI / CD layihəsi bu platformanın təklif etdiyi qabaqcıl xüsusiyyətlər sayəsində öz mövqeyini çox yüksək tutdu.

Digər oxşar platformalarla müqayisədə Jenkins-in populyarlığından danışsaq, qeyd edək ki, Travis CI və Jenkins platformalarını müqayisə edən məqalə dərc edərək sorğu təşkil etmişik. Orada 85 istifadəçi iştirak edib. Respondentlərdən ən çox bəyəndikləri CI/CD alətini seçmək istəndi. 79% Jenkins, 5% Travis CI, 16% isə digər vasitələrə üstünlük verdiyini qeyd etdi.

Jenkins döyüşü və GitLab CI/CD
Результаты опроса

Digər CI/CD alətləri arasında GitLab CI/CD ən çox xatırlanırdı.

Əgər siz DevOps ilə bağlı ciddisinizsə, o zaman layihənin xüsusiyyətlərini, büdcəsini və digər tələbləri nəzərə alaraq müvafiq alətləri diqqətlə seçməlisiniz. Düzgün seçim etməyinizə kömək etmək üçün biz Jenkins və GitLab CI/CD-ni nəzərdən keçirəcəyik. Bu, ümid edirəm ki, düzgün seçim etməyinizə kömək edəcək.

Jenkins ilə tanışlıq

Jenkins döyüşü və GitLab CI/CD
Jenkins proqram layihələri ilə bağlı bir çox işi avtomatlaşdırmaq üçün nəzərdə tutulmuş tanınmış, çevik CI/CD alətidir. Jenkins tamamilə Java-da yazılmışdır və MIT lisenziyası altında buraxılmışdır. Proqram təminatının qurulması, sınaqdan keçirilməsi, yerləşdirilməsi, inteqrasiyası və buraxılması ilə bağlı vəzifələrin avtomatlaşdırılmasına yönəlmiş güclü xüsusiyyətlər dəstinə malikdir. Bu alət müxtəlif əməliyyat sistemlərində istifadə edilə bilər. Bunlara macOS, Windows və OpenSUSE, Ubuntu və Red Hat kimi bir çox Linux paylamaları daxildir. Jenkins üçün müxtəlif əməliyyat sistemləri üçün nəzərdə tutulmuş quraşdırma paketləri mövcuddur, bu alət Docker-də və JRE (Java Runtime Environment) olan istənilən sistemdə quraşdırıla bilər.

Jenkins tərtibatçıları Kubernetes mühitində işləmək üçün nəzərdə tutulmuş Jenkins X adlı başqa bir layihə yaratdılar. Jenkins X DevOps-un ən yaxşı təcrübələrini izləyən CI/CD boru kəmərlərini qurmaq üçün Helm, Jenkins CI/CD Server, Kubernetes və digər alətləri birləşdirir. Məsələn, burada GitOps istifadə olunur.

Jenkinsin üstünlükləri xəzinəsinə onun skriptlərinin çox yaxşı qurulmuş, başa düşülən və oxunması asan olması faktını əlavə etmək olar. Jenkins komandası Jenkins-in müxtəlif texnologiyalarla qarşılıqlı əlaqəsini təşkil etməyə yönəlmiş 1000-ə yaxın plagin yaratmışdır. Skriptlər, məsələn, müxtəlif qapalı sistemlərə qoşulmağa imkan verən autentifikasiya sistemlərindən istifadə edə bilər.

Cenkins boru kəmərinin istismarı zamanı hər bir addımda nələrin baş verdiyini, işin müəyyən mərhələlərinin uğurla başa çatdırılıb-keçilmədiyini müşahidə edə bilərsiniz. Bununla belə, bütün bunları müəyyən bir qrafik interfeysdən istifadə etmədən, lakin terminalın imkanlarından istifadə edərək izləyə bilərsiniz.

Jenkinsin xüsusiyyətləri

Jenkins-in tanınmış xüsusiyyətləri arasında quraşdırma asanlığı, müxtəlif əməliyyatların yüksək səviyyədə avtomatlaşdırılması və mükəmməl sənədlər var. DevOps tapşırıqlarının həlli haqqında danışırıqsa, burada Jenkins çox etibarlı bir vasitə hesab olunur, ondan istifadə edərək, bir qayda olaraq, layihənin işlənməsinin bütün prosesini yaxından izləməyin mənası yoxdur. Bu, digər CI/CD alətlərində belə deyil. Cenkinsin ən mühüm xüsusiyyətlərindən bəziləri haqqında danışaq.

▍1. Pulsuz, açıq mənbə, çox platformalı dəstək

Jenkins macOS, Windows və Linux platformalarında işləyə bilər. O, həmçinin Docker mühitində fəaliyyət göstərə bilər ki, bu da sizə avtomatlaşdırılmış tapşırıqların vahid və sürətli icrasını təşkil etməyə imkan verir. Bu alət həm də Apache Tomcat və GlassFish kimi Java ilə işləyən konteynerlərdə servlet kimi işləyə bilər. Jenkins-in keyfiyyətcə quraşdırılması sənədləşdirilmişdir.

▍2. İnkişaf etdirilmiş plagin ekosistemi

Jenkins plagin ekosistemi digər CI/CD alətlərinin plagin ekosistemlərindən daha yetkin görünür. Hazırda Jenkins üçün 1500-dən çox plagin var. Bu plaginlər geniş tapşırıqların həllinə yönəlib, onların köməyi ilə siz müxtəlif layihələri avtomatlaşdıra bilərsiniz. Seçmək üçün pulsuz plaginlərin zənginliyi o deməkdir ki, Jenkins-dən istifadə edirsinizsə, bahalı pullu plaginləri almaq məcburiyyətində deyilsiniz. Bir ehtimal var inteqrasiya Bir çox DevOps alətləri ilə Jenkins.

▍3. Asan quraşdırma və quraşdırma

Jenkins quraşdırmaq və konfiqurasiya etmək olduqca asandır. Eyni zamanda, sistemin yenilənməsi prosesi də çox rahatdır. Burada yenə də sənədlərin keyfiyyətini qeyd etməyə dəyər, çünki orada Jenkinsin quraşdırılması və konfiqurasiyası ilə bağlı müxtəlif suallara cavab tapa bilərsiniz.

▍4. Dost icma

Artıq qeyd edildiyi kimi, Jenkins açıq mənbəli bir layihədir, ekosistemi çoxlu sayda plaginləri ehtiva edir. Layihəni inkişaf etdirməyə kömək etmək üçün Jenkins ətrafında böyük bir istifadəçi və tərtibatçı icması inkişaf etdi. İcma Jenkinsin inkişafına təkan verən amillərdən biridir.

▍5. REST API-nin mövcudluğu

Jenkins ilə işləyərkən sistemin imkanlarını genişləndirən REST API-dən istifadə edə bilərsiniz. Sistemə uzaqdan daxil olmaq üçün API üç versiyada təqdim olunur: XML, JSONP dəstəyi ilə JSON, Python. Burada Jenkins REST API ilə işləmək təfərrüatlarını əhatə edən sənəd səhifəsi.

▍6. Tapşırıqların paralel icrasına dəstək

Jenkins DevOps tapşırıqlarının paralelləşdirilməsini dəstəkləyir. O, müvafiq alətlərlə asanlıqla inteqrasiya oluna və tapşırıqların nəticələri haqqında bildirişlər ala bilər. Müxtəlif virtual maşınlardan istifadə edərək layihənin paralel qurulmasını təşkil etməklə kod testini sürətləndirmək olar.

▍7. Paylanmış mühitlərdə iş üçün dəstək

Jenkins bir çox kompüterdən istifadə edərək paylanmış quruluşları təşkil etməyə imkan verir. Bu xüsusiyyət böyük layihələrdə tətbiq olunur və iş sxemindən istifadə edir, ona görə bir master Jenkins serveri və bir neçə qul maşını var. Slave maşınlar müxtəlif mühitlərdə bir layihənin sınaqdan keçirilməsini təşkil etmək lazım olduğu hallarda da istifadə edilə bilər. Bu xüsusiyyətlər Jenkins-i digər oxşar layihələrdən fərqləndirir.

GitLab-a giriş

Jenkins döyüşü və GitLab CI/CD
GitLab CI/CD ən yeni və ən sevimli DevOps alətlərindən biri adlandırmaq olar. Bu pulsuz açıq mənbə aləti GitLab versiyasına nəzarət sistemində quraşdırılmışdır. GitLab platformasının icma versiyası var, o, anbarların idarə edilməsini, problemlərin izlənilməsi alətlərini, kodun nəzərdən keçirilməsinin təşkilini, sənədləşmə yönümlü mexanizmləri dəstəkləyir. Şirkətlər təhlükəsiz istifadəçi avtorizasiyası və autentifikasiyası üçün GitLab-ı Active Directory və LDAP serverləri ilə əlaqələndirərək yerli olaraq quraşdıra bilərlər.

Burada GitLab CI/CD imkanlarından istifadə edərək CI/CD boru kəmərləri yaratmağı öyrənməyə kömək edəcək video dərslik.

GitLab CI/CD əvvəlcə müstəqil layihə kimi buraxıldı, lakin 2015-ci ildə bu alətlər dəsti GitLab 8.0-a inteqrasiya olundu. Tək GitLab CI/CD serveri 25000-dən çox istifadəçini dəstəkləyə bilər. Belə serverlərə əsaslanaraq siz yüksək əlçatan sistemlər yarada bilərsiniz.

GitLab CI/CD və əsas GitLab layihəsi Ruby və Go proqramlarında yazılmışdır. MİT lisenziyası ilə sərbəst buraxılırlar. GitLab CI/CD, CI/CD alətlərinin adi xüsusiyyətlərinə əlavə olaraq, məsələn, iş qrafiki ilə bağlı əlavə funksiyaları da dəstəkləyir.

GitLab CI/CD-ni layihəyə inteqrasiya etmək çox asandır. GitLab CI/CD-dən istifadə edərkən layihə kodunun emalı prosesi mərhələlərə bölünür ki, onların hər biri müəyyən ardıcıllıqla yerinə yetirilən bir neçə tapşırıqdan ibarət ola bilər. Tapşırıqlar dəqiq tənzimlənə bilər.

Tapşırıqlar paralel olaraq yerinə yetirilə bilər. Mərhələlərin və tapşırıqların ardıcıllığını təyin etdikdən sonra CI/CD boru kəməri işə hazırdır. Tapşırıqların vəziyyətini izləməklə onun gedişatını izləyə bilərsiniz. Nəticədə, GitLab CI / CD-dən istifadə çox rahatdır, bəlkə də digər oxşar vasitələrdən daha rahatdır.

GitLab CI/CD və GitLab xüsusiyyətləri

GitLab CI/CD ən məşhur DevOps alətlərindən biridir. Layihə yüksək keyfiyyətli sənədlərlə seçilir, onun xüsusiyyətləri asan və istifadəsi rahatdır. GitLab CI/CD ilə hələ tanış deyilsinizsə, bu alətin xüsusiyyətlərinin aşağıdakı siyahısı sizə ondan nə gözləyə biləcəyiniz barədə ümumi fikir verəcəkdir. Qeyd etmək lazımdır ki, bu funksiyaların çoxu GitLab CI/CD-nin inteqrasiya olunduğu GitLab platformasının özü ilə bağlıdır.

▍1. Populyarlıq

GitLab CI/CD geniş istifadəni tapmış nisbətən yeni bir vasitədir. GitLab CI/CD yavaş-yavaş avtomatlaşdırılmış sınaq və proqram təminatının yerləşdirilməsi üçün istifadə edilən çox populyar CI/CD alətinə çevrildi. Onun qurulması sadədir. O, həmçinin GitLab platformasında quraşdırılmış pulsuz CI/CD alətidir.

▍2. GitLab Səhifələri və Jekyll üçün dəstək

Jekyll GitLab Səhifələr sistemində GitLab repozitoriyaları əsasında saytlar yaratmaq üçün istifadə edilə bilən statik sayt generatorudur. Sistem mənbə materiallarını götürür və onların əsasında hazır statik sayt yaradır. Siz faylı redaktə etməklə belə saytların görünüşünü və xüsusiyyətlərini idarə edə bilərsiniz _config.yml, Jekyll tərəfindən istifadə edilmişdir.

▍3. Layihə planlaşdırma imkanları

Layihələrin mərhələlərini planlaşdırmaq bacarığı sayəsində problemləri və onların qruplarını izləmək rahatlığı artır. Bu, layihələr üzrə işin təşkilini idarə etməyə, onların həyata keçirilməsini konkret tarixə planlaşdırmağa imkan verir.

▍4. CI qaçışçılarının avtomatik miqyası

Xüsusi tapşırıqları yerinə yetirmək üçün cavabdeh olan qaçışçıların avtomatik miqyası sayəsində siz server imkanlarının icarəsi ilə bağlı xərclərə xeyli qənaət edə bilərsiniz. Bu, xüsusilə layihələrin paralel olaraq sınaqdan keçirildiyi mühitlərə gəldikdə çox vacibdir. Bundan əlavə, bu, bir neçə depodan ibarət böyük layihələr üçün vacibdir.

▍5. Problem izləmə vasitələri

GitLab-ın güclü problemləri izləmə imkanları bir çox açıq mənbəli layihələrin platformadan istifadə etməsinə səbəb olub. GitLab CI/CD müxtəlif kod filiallarının paralel sınaqdan keçirilməsinə imkan verir. Test nəticələri sistem interfeysində rahat şəkildə təhlil edilir. Bu, GitLab CI/CD-ni Jenkins-dən fərqləndirir.

▍6. Repozitoriyalara girişin məhdudlaşdırılması

GitLab platforması depolara girişin məhdudlaşdırılmasını dəstəkləyir. Məsələn, anbarda layihə üzərində əməkdaşlıq edənlərə öz rollarına uyğun icazələr verilə bilər. Bu xüsusilə korporativ layihələr üçün doğrudur.

▍7. Aktiv icma dəstəyi

GitLab ətrafında bu platformanın və onun alətlərinin, xüsusən də GitLab CI/CD-nin inkişafına töhfə verən fəal icma inkişaf etmişdir. GitLab CI/CD və GitLab-ın dərin inteqrasiyası, digər məsələlərlə yanaşı, GitLab CI/CD ilə işləyərkən yaranan suallara cavab tapmağı asanlaşdırır.

▍8. Müxtəlif versiya idarəetmə sistemləri üçün dəstək

GitLab CI/CD, GitLab depolarında yerləşdirilən koddan daha çoxu ilə işləyə bilən bir sistemdir. Məsələn, kod GitHub deposunda saxlanıla bilər və CI / CD boru kəməri GitLab CI / CD istifadə edərək GitLab əsasında təşkil edilə bilər.

Jenkins və GitLab CI/CD-nin müqayisəsi

Jenkins və GitLab CI/CD çox yaxşı alətlərdir, hər ikisi CI/CD boru kəmərinin rəvan işləməsini təmin edir. Amma onları müqayisə etsəniz, məlum olur ki, onlar bir çox cəhətdən oxşar olsalar da, müəyyən mənada bir-birlərindən fərqlənirlər.

Xarakteristikası
Jenkins
GitLab CI/CD

Açıq mənbə və ya qapalı mənbə
açıq mənbə
açıq mənbə

Quraşdırma
Tələb olunur.
Bu GitLab platformasının daxili xüsusiyyəti olduğundan tələb olunmur.

Unikal xüsusiyyətlər
Plugin dəstəyi.
Versiya idarəetmə sisteminə dərin inteqrasiya.

Dəstək
Yoxdur.
Mövcuddur.

Quraşdırma və konfiqurasiya
Çətinliklər səbəb olmur
Çətinliklər səbəb olmur

Sistemin öz-özünə yerləşdirilməsi
Bu sistemdən istifadə etməyin yeganə yoludur.
Dəstəklənir.

CI/CD boru kəmərlərinin yaradılması
Jenkins Pipeline istifadə edərək dəstəklənir.
Dəstəklənir.

Tətbiq performansının monitorinqi
Yoxdur.
Mövcuddur.

Ekosistem
1000-dən çox plagin var.
Sistem GitLab daxilində hazırlanır.

API
Təkmil API sistemini dəstəkləyir.
Layihələrə daha dərin inteqrasiya üçün API təklif edir.

JavaScript dəstəyi
Mövcuddur.
Mövcuddur.

Digər alətlərlə inteqrasiya
Digər alətlər və platformalarla inteqrasiya dəstəklənir (Slack, GitHub).
Üçüncü tərəf sistemləri ilə, xüsusən də GitHub və Kubernetes ilə inteqrasiya üçün bir çox vasitə.

Kod keyfiyyətinə nəzarət
Dəstəklənir - SonarQube plaginindən və digər plaginlərdən istifadə etməklə.
Dəstəklənir.

Jenkins və GitLab CI/CD arasındakı fərqlər

Jenkins və GitLab CI/CD-ni təsvir edib müqayisə etdikdən sonra gəlin bu DevOps alətləri arasındakı fərqlərə diqqət edək. Bu fərqləri bilmək sizə bu vasitələrdən birini digərindən üstün tutanları başa düşməyə kömək edəcək.

  • GitLab CI/CD Git repozitoriyalarına tam nəzarət edə bilər. Söhbət repozitor filiallarının idarə edilməsindən və bəzi digər funksiyalardan gedir. Lakin Jenkins, depolarla işləyə bilsə də, GitLab CI / CD ilə eyni səviyyədə nəzarəti vermir.
  • Jenkins pulsuz açıq mənbə layihəsidir. Onu seçən şəxs müstəqil şəkildə yerləşdirir. Və GitLab CI / CD GitLab platformasına daxildir, bu açar təslim həlldir.
  • GitLab CI/CD layihə səviyyəsində işləyən qabaqcıl tapşırıqların idarə edilməsi alətlərini dəstəkləyir. Jenkinsin bu tərəfi daha az inkişaf etmişdir.

Jenkins və GitLab CI/CD: güclü və zəif tərəflər

İndi Jenkins və GitLab CI/CD haqqında bir az təsəvvürünüz var. İndi sizi bu alətlərlə daha yaxşı tanış etmək üçün onların güclü və zəif tərəflərinə nəzər salaq. Güman edirik ki, hansı alətə ehtiyacınız olduğuna artıq qərar verdiniz. İnşallah bu bölmə sizə özünüzü sınamağa imkan verəcək.

▍Cenkinsin güclü tərəfləri

  • Çoxlu sayda plaginlər.
  • Alətin quraşdırılmasına tam nəzarət.
  • Qaçışların sadə sazlanması.
  • Asan node quraşdırma.
  • Asan kodun yerləşdirilməsi.
  • Çox yaxşı etimadnamə idarəetmə sistemi.
  • Çeviklik və çox yönlülük.
  • Müxtəlif proqramlaşdırma dilləri üçün dəstək.
  • Sistem intuitiv səviyyədə başa düşüləndir.

▍Cenkinsin zəif tərəfləri

  • Pluginlərdən istifadə etmək çətin ola bilər.
  • Jenkins-i kiçik layihələrdə istifadə edərkən, onu özünüz konfiqurasiya etmək üçün tələb olunan vaxt əsassız dərəcədə böyük ola bilər.
  • CI/CD zəncirləri üzrə ümumi analitik məlumatın olmaması.

▍GitLab CI/CD-nin güclü tərəfləri

  • Docker ilə yaxşı inteqrasiya.
  • Qaçışların sadə miqyası.
  • CI/CD boru kəmərinin mərhələlərinin bir hissəsi olan tapşırıqların paralel icrası.
  • Tapşırıq əlaqələri qurarkən yönəldilmiş asiklik qrafik modelindən istifadə.
  • Qaçışların paralel icrası imkanı sayəsində yüksək miqyaslılıq səviyyəsi.
  • Tapşırıqlar əlavə etmək asanlığı.
  • Sadə münaqişənin həlli.
  • Etibarlı təhlükəsizlik sistemi.

▍GitLab CI/CD-nin zəif tərəfləri

  • Hər bir tapşırıq üçün artefaktları təsvir etməli və yükləməli / yükləməlisiniz.
  • Filialları birləşdirmədən əvvəl onların nəticələrini sınaqdan keçirə bilməzsiniz.
  • CI / CD boru kəmərinin mərhələlərini təsvir edərkən, onlarda ayrı-ayrı mərhələləri ayırmaq hələ mümkün deyil.

Nəticələri

Həm Jenkins, həm də GitLab CI/CD-nin güclü və zəif tərəfləri var. Nə seçmək sualının cavabı müəyyən bir layihənin ehtiyaclarından və xüsusiyyətlərindən asılıdır. Bu gün nəzərdən keçirilən CI/CD alətlərinin hər biri müəyyən xüsusiyyətlərə malikdir, baxmayaraq ki, bu alətlər eyni problemi həll etmək üçün yaradılmışdır. Eyni zamanda, Jenkins müstəqil bir vasitədir və GitLab CI / CD kod üzərində əməkdaşlıq üçün nəzərdə tutulmuş platformanın bir hissəsidir.

CI / CD sistemini seçərkən, onun imkanlarına əlavə olaraq, onunla əlaqəli ola biləcək xərcləri və layihəni dəstəkləyən DevOps mühəndislərinin nə ilə işləməyə öyrəşdiyini nəzərə almağa dəyər.

Hansı CI/CD alətlərindən istifadə edirsiniz?

Jenkins döyüşü və GitLab CI/CD

Jenkins döyüşü və GitLab CI/CD

Mənbə: www.habr.com

Добавить комментарий