Fl-aħħar għaxar snin, saru avvanzi sinifikanti fl-iżvilupp ta 'għodod għall-integrazzjoni kontinwa (Integrazzjoni Kontinwa, CI) u skjerament kontinwu (Konsenja Kontinwa, CD). L-iżvilupp ta 'teknoloġiji għall-integrazzjoni tal-iżvilupp u l-operat tas-softwer (Operazzjonijiet ta' Żvilupp, DevOps) wassal għal żieda mgħaġġla fid-domanda għal għodod CI / CD. Is-soluzzjonijiet eżistenti qed jitjiebu kontinwament, jippruvaw ilaħħqu maż-żminijiet, il-verżjonijiet ġodda tagħhom huma rilaxxati, fid-dinja tas-softwer tal-assigurazzjoni tal-kwalità (Assigurazzjoni tal-Kwalità, QA), ħafna prodotti ġodda qed jidhru kontinwament. B'tali rikkezza ta 'għażla, l-għażla tal-għodda t-tajba mhix biċċa xogħol faċli.
Fost l-għodod kollha eżistenti tas-CI / CD, hemm żewġ proġetti li żgur ta’ min joqgħod attent lil xi ħadd li qed ifittex xi ħaġa minn dan il-qasam. Qed nitkellmu dwar Jenkins u l-għodda GitLab CI / CD, li hija parti mill-pjattaforma GitLab. Jenkins għandu aktar minn
Ħu, pereżempju, data mill-pjattaforma G2, li takkumula reviżjonijiet ta 'varjetà wiesgħa ta' prodotti u l-klassifikazzjonijiet li l-utenti jagħtuhom. Hawn hu l-klassifikazzjoni medja
Jekk nitkellmu dwar il-popolarità ta 'Jenkins meta mqabbla ma' pjattaformi simili oħra, aħna ninnutaw li aħna, wara li ppubblikajna artiklu li jqabbel il-pjattaformi Travis CI u Jenkins, irranġajna stħarriġ. 85 utent ipparteċipaw fiha. Dawk li wieġbu ntalbu jagħżlu l-għodda CI/CD li jogħġbu l-aktar. 79% għażlu Jenkins, 5% għażlu Travis CI, u 16% indikaw li jippreferu għodod oħra.
Ir-riżultati tal-votazzjoni
Fost għodod oħra CI/CD, GitLab CI/CD issemma l-aktar spiss.
Jekk int serju dwar DevOps, allura trid tagħżel bir-reqqa l-għodod xierqa, filwaqt li tqis l-ispeċifiċitajiet tal-proġett, il-baġit tiegħu, u rekwiżiti oħra. Biex ngħinuk tagħmel l-għażla t-tajba, se nirrevedu Jenkins u GitLab CI/CD. Nisperaw li dan jgħinek tagħmel l-għażla t-tajba.
Introduzzjoni għal Jenkins
L-iżviluppaturi Jenkins ħolqu proġett ieħor, Jenkins X, li huwa ddisinjat biex jaħdem f'ambjent Kubernetes. Jenkins X jintegra Helm, is-server Jenkins CI/CD, Kubernetes, u għodod oħra biex jibnu pipelines CI/CD li jsegwu l-aħjar prattiki DevOps. Per eżempju, GitOps jintuża hawn.
Wieħed jista 'jżid mat-teżor tal-vantaġġi ta' Jenkins il-fatt li l-iskripts tiegħu huma strutturati tajjeb ħafna, jinftiehmu u faċli biex jinqraw. It-tim Jenkins ħoloq madwar 1000 plugin li huma mmirati biex jorganizzaw l-interazzjoni ta 'Jenkins ma' varjetà wiesgħa ta 'teknoloġiji. L-iskripts jistgħu jużaw sistemi ta 'awtentikazzjoni, li, pereżempju, jippermettulek tikkonnettja ma' diversi sistemi magħluqa.
Waqt it-tħaddim tal-pipeline Jenkins, tista 'tosserva x'jiġri f'kull pass, kemm jekk ċerti stadji tax-xogħol ikunu tlestew b'suċċess jew le. Tista' tara dan kollu, madankollu, mingħajr ma tuża ċertu interface grafiku, iżda tuża l-kapaċitajiet tat-terminal.
Karatteristiċi ta' Jenkins
Fost il-karatteristiċi magħrufa ta 'Jenkins hemm faċilità ta' setup, livell għoli ta 'awtomazzjoni ta' operazzjonijiet varji, u dokumentazzjoni eċċellenti. Jekk nitkellmu dwar is-soluzzjoni tal-kompiti DevOps, allura hawn Jenkins titqies bħala għodda affidabbli ħafna, li tużaha, bħala regola, ma jagħmilx sens li tissorvelja mill-qrib il-proċess kollu tal-ipproċessar tal-proġett. Dan mhuwiex il-każ b'għodod CI/CD oħra. Ejja nitkellmu dwar xi wħud mill-aktar karatteristiċi importanti ta 'Jenkins.
▍1. Ħieles, sors miftuħ, appoġġ multi-pjattaforma
Jenkins jista' jaħdem fuq pjattaformi macOS, Windows u Linux. Jista 'wkoll jiffunzjona f'ambjent Docker, li jippermettilek torganizza eżekuzzjoni uniformi u veloċi ta' kompiti awtomatizzati. Din l-għodda tista 'taħdem ukoll bħala servlet f'kontenituri ppermettiet Java bħal Apache Tomcat u GlassFish. Installazzjoni ta 'Jenkins b'mod kwalitattiv
▍2. Ekosistema tal-plugin żviluppata
L-ekosistema tal-plugins Jenkins tidher li hija ħafna aktar matura mill-ekosistemi tal-plugins ta 'għodod CI/CD oħra. Bħalissa hemm aktar minn 1500 plugin għal Jenkins. Dawn il-plugins huma mmirati biex isolvu firxa wiesgħa ta 'kompiti, bl-għajnuna tagħhom tista' awtomat varjetà ta 'proġetti. Il-ġid ta 'plugins b'xejn minn fejn tagħżel ifisser li jekk qed tuża Jenkins, m'għandekx għalfejn tixtri plugins imħallsa għaljin. Hemm possibbiltà
▍3. Installazzjoni u setup faċli
Jenkins huwa pjuttost faċli biex jiġi installat u kkonfigurat. Fl-istess ħin, il-proċess ta 'aġġornament tas-sistema huwa wkoll konvenjenti ħafna. Hawnhekk, għal darb'oħra, ta 'min isemmi l-kwalità tad-dokumentazzjoni, peress li fiha tista' ssib tweġibiet għal varjetà ta 'mistoqsijiet relatati mal-installazzjoni u l-konfigurazzjoni ta' Jenkins.
▍4. Komunità amikevoli
Kif diġà ssemma, Jenkins huwa proġett ta 'sors miftuħ, li l-ekosistema tiegħu tinkludi numru kbir ta' plugins. Komunità kbira ta' utenti u żviluppaturi żviluppat madwar Jenkins biex tgħin fl-iżvilupp tal-proġett. Il-komunità hija waħda mill-fatturi li jmexxi l-iżvilupp ta 'Jenkins.
▍5. Disponibbiltà tal-API REST
Waqt li taħdem ma 'Jenkins, tista' tuża l-API REST, li tespandi l-kapaċitajiet tas-sistema. API għall-aċċess mill-bogħod għas-sistema hija ppreżentata fi tliet verżjonijiet: XML, JSON b'appoġġ JSONP, Python.
▍6. Appoġġ għall-eżekuzzjoni parallela tal-kompiti
Jenkins jappoġġja l-parallelizzazzjoni tal-kompiti DevOps. Jista 'jiġi integrat faċilment ma' għodod rilevanti u jirċievi notifiki dwar ir-riżultati tal-kompiti. L-ittestjar tal-kodiċi jista 'jiġi aċċellerat billi tiġi organizzata bini parallel tal-proġett bl-użu ta' magni virtwali differenti.
▍7. Appoġġ għal xogħol f'ambjenti mqassma
Jenkins jippermettilek torganizza bini mqassam billi tuża diversi kompjuters. Din il-karatteristika hija applikabbli fi proġetti kbar u tuża skema ta 'xogħol, li skontha hemm server wieħed kaptan Jenkins u diversi magni slave. Magni slave jistgħu jintużaw ukoll f'sitwazzjonijiet fejn huwa meħtieġ li jiġi organizzat l-ittestjar ta 'proġett f'ambjenti differenti. Dawn il-karatteristiċi jiddistingwu lil Jenkins minn proġetti oħra simili.
Introduzzjoni għal GitLab
GitLab CI/CD kien oriġinarjament rilaxxat bħala proġett waħdu, iżda fl-2015 dan is-sett ta 'għodod ġie integrat f'GitLab 8.0. Server wieħed GitLab CI/CD jista 'jappoġġa aktar minn 25000 utent. Ibbażat fuq servers bħal dawn, tista 'toħloq sistemi li huma disponibbli ħafna.
GitLab CI/CD u l-proġett prinċipali GitLab huma miktuba f'Ruby and Go. Huma rilaxxati taħt il-liċenzja MIT. GitLab CI/CD, minbarra l-karatteristiċi tas-soltu tal-għodod CI/CD, jappoġġja wkoll karatteristiċi addizzjonali relatati, pereżempju, mal-iskedar tax-xogħol.
L-integrazzjoni ta' GitLab CI/CD fi proġett hija faċli ħafna. Meta tuża GitLab CI/CD, il-proċess tal-ipproċessar tal-kodiċi tal-proġett huwa maqsum fi stadji, li kull wieħed minnhom jista 'jikkonsisti f'diversi kompiti mwettqa f'ċerta ordni. Il-kompiti jistgħu jiġu rfinati.
Il-kompiti jistgħu jimxu b'mod parallel. Wara li twaqqaf is-sekwenza tal-istadji u l-kompiti, il-pipeline CI/CD huwa lest biex imur. Tista 'tissorvelja l-progress tagħha billi timmonitorja l-istatus tal-kompiti. Bħala riżultat, l-użu ta 'GitLab CI / CD huwa konvenjenti ħafna, forsi aktar konvenjenti minn għodod simili oħra.
Karatteristiċi ta' GitLab CI/CD u GitLab
GitLab CI/CD hija waħda mill-aktar għodod DevOps popolari. Il-proġett huwa distint minn dokumentazzjoni ta 'kwalità għolja, il-karatteristiċi tiegħu huma faċli u konvenjenti biex jintużaw. Jekk għadek m'intix familjari ma' GitLab CI/CD, il-lista li ġejja tal-karatteristiċi ta' din l-għodda tagħtik idea ġenerali ta' x'tista' tistenna minnha. Għandu jiġi nnutat li ħafna minn dawn il-karatteristiċi huma relatati mal-pjattaforma GitLab nnifisha, li fiha GitLab CI / CD huwa integrat.
▍1. Popolarità
GitLab CI/CD hija għodda relattivament ġdida li sabet użu mifrux. GitLab CI/CD bil-mod sar għodda CI/CD popolari ħafna użata għall-ittestjar awtomatizzat u l-iskjerament tas-softwer. Huwa sempliċi biex jitwaqqaf. Hija wkoll għodda CI/CD b'xejn mibnija fil-pjattaforma GitLab.
▍2. Appoġġ għall-Paġni GitLab u Jekyll
Jekyll huwa ġeneratur ta 'sit statiku li jista' jintuża fis-sistema GitLab Pages biex jinħolqu siti bbażati fuq repożitorji GitLab. Is-sistema tieħu l-materjali mis-sors u tiġġenera sit statiku lest ibbażat fuqhom. Tista 'tikkontrolla d-dehra u l-karatteristiċi ta' siti bħal dawn billi teditja l-fajl _config.yml
, użat minn Jekyll.
▍3. Kapaċità tal-ippjanar tal-proġett
Grazzi għall-abbiltà li tippjana l-istadji tal-proġetti, tiżdied il-konvenjenza tal-problemi ta 'traċċar u l-gruppi tagħhom. Dan jippermettilek timmaniġġja l-organizzazzjoni tax-xogħol fuq proġetti, tippjana l-implimentazzjoni tagħhom f'data speċifika.
▍4. Skalar awtomatiku ta 'runners CI
Grazzi għall-iskala awtomatika ta 'runners responsabbli għat-twettiq ta' kompiti speċifiċi, tista 'tiffranka ħafna fuq l-ispiża tal-kiri tal-kapaċitajiet tas-server. Dan huwa importanti ħafna, speċjalment fejn jidħlu ambjenti fejn il-proġetti jiġu ttestjati b'mod parallel. Barra minn hekk, dan huwa importanti għal proġetti kbar li jikkonsistu f'diversi repożitorji.
▍5. Għodod ta 'traċċar tal-ħruġ
Il-kapaċitajiet qawwija ta 'traċċar tal-kwistjonijiet ta' GitLab wasslu għal ħafna proġetti ta 'sors miftuħ biex jużaw il-pjattaforma. GitLab CI/CD jippermetti ttestjar parallel ta' fergħat ta' kodiċi differenti. Ir-riżultati tat-test huma analizzati b'mod konvenjenti fl-interface tas-sistema. Dan jiddistingwi GitLab CI/CD apparti minn Jenkins.
▍6. Restrizzjoni tal-aċċess għar-repożitorji
Il-pjattaforma GitLab tappoġġja r-restrizzjoni tal-aċċess għar-repożitorji. Pereżempju, dawk li jikkollaboraw fuq proġett f'repożitorju jistgħu jiġu assenjati permessi xierqa għar-rwoli tagħhom. Dan hu veru speċjalment għal proġetti korporattivi.
▍7. Appoġġ attiv tal-komunità
Żviluppat komunità attiva madwar GitLab, li tikkontribwixxi għall-iżvilupp ta 'din il-pjattaforma u l-għodod tagħha, b'mod partikolari, GitLab CI / CD. L-integrazzjoni profonda ta' GitLab CI/CD u GitLab, fost affarijiet oħra, tagħmilha faċli li ssib tweġibiet għal mistoqsijiet li jinqalgħu meta taħdem ma' GitLab CI/CD.
▍8. Appoġġ għal diversi sistemi ta 'kontroll tal-verżjoni
GitLab CI/CD hija sistema li tista' taħdem b'aktar minn sempliċi kodiċi ospitat fir-repożitorji GitLab. Per eżempju, il-kodiċi jista 'jinħażen f'repożitorju GitHub, u l-pipeline CI / CD jista' jiġi organizzat fuq il-bażi ta 'GitLab bl-użu ta' GitLab CI / CD.
Tqabbil ta 'Jenkins u GitLab CI/CD
Jenkins u GitLab CI/CD huma għodod tajbin ħafna, li t-tnejn li huma kapaċi jagħmlu l-pipeline CI/CD jaħdem bla xkiel. Imma jekk inqabbluhom, jirriżulta li, għalkemm huma simili f'ħafna modi, huma differenti minn xulxin f'ċerti modi.
Karatterizzazzjoni
Jenkins
GitLab CI/CD
Sors miftuħ jew sors magħluq
sors miftuħ
sors miftuħ
Installazzjoni
Meħtieġ.
Mhux meħtieġ peress li din hija karatteristika integrata tal-pjattaforma GitLab.
Karatteristiċi Uniċi
Appoġġ tal-plugin.
Integrazzjoni profonda fis-sistema ta 'kontroll tal-verżjoni.
Appoġġ
Nieqes.
Disponibbli.
Installazzjoni u konfigurazzjoni
Diffikultajiet ma jikkawżaw
Diffikultajiet ma jikkawżaw
Awto-skjerament tas-sistema
Dan huwa l-uniku mod biex tuża s-sistema.
Appoġġjati.
Ħolqien CI/CD Pipelines
Appoġġjati, bl-użu Jenkins Pipeline.
Appoġġjati.
Monitoraġġ tal-prestazzjoni tal-applikazzjoni
Nieqes.
Disponibbli.
Ekosistema
Hemm aktar minn 1000 plugin.
Is-sistema qed tiġi żviluppata fi ħdan GitLab.
API
Jappoġġja sistema API avvanzata.
Joffri API għal integrazzjoni aktar profonda fi proġetti.
Appoġġ JavaScript
Disponibbli.
Disponibbli.
Integrazzjoni ma' għodod oħra
L-integrazzjoni ma 'għodod u pjattaformi oħra hija appoġġjata (Slack, GitHub).
Ħafna għodod għall-integrazzjoni ma 'sistemi ta' partijiet terzi, b'mod partikolari - ma 'GitHub u Kubernetes.
Kontroll tal-kwalità tal-kodiċi
Appoġġjati - bl-użu tal-plugin SonarQube u plugins oħra.
Appoġġjati.
Differenzi bejn Jenkins u GitLab CI/CD
Wara li ddeskriviet u qabbel lil Jenkins u GitLab CI/CD, ejja niffukaw fuq id-differenzi bejn dawn l-għodod DevOps. Li tkun taf dawn id-differenzi tgħinek tifhem lil dawk li jippreferu waħda minn dawn l-għodda fuq l-oħra.
- GitLab CI/CD jista 'jikkontrolla bis-sħiħ ir-repożitorji Git. Qed nitkellmu dwar il-ġestjoni tal-fergħat tar-repożitorji u xi karatteristiċi oħra. Iżda Jenkins, għalkemm jista 'jaħdem ma' repożitorji, ma jagħtix l-istess livell ta 'kontroll fuqhom bħal GitLab CI / CD.
- Jenkins huwa proġett b'xejn ta' sors miftuħ. Min jagħżelha jużaha b'mod indipendenti. U GitLab CI / CD huwa inkluż fil-pjattaforma GitLab, din hija soluzzjoni turnkey.
- GitLab CI/CD jappoġġja għodod avvanzati għall-ġestjoni tal-kompiti li jaħdmu fil-livell tal-proġett. Din in-naħa ta 'Jenkins hija inqas żviluppata.
Jenkins u GitLab CI/CD: saħħiet u dgħufijiet
Issa għandek xi idea dwar Jenkins u GitLab CI/CD. Issa, biex tkun familjari aħjar ma 'dawn l-għodod, ejja nagħtu ħarsa lejn is-saħħiet u d-dgħufijiet tagħhom. Aħna nassumu li diġà ddeċidejt liema għodda għandek bżonn. Nisperaw, din it-taqsima tippermettilek tittestja lilek innifsek.
▍Qawwiet ta' Jenkins
- Numru kbir ta 'plugins.
- Kontroll sħiħ fuq l-installazzjoni tal-għodda.
- Debugging sempliċi ta 'runners.
- Setup faċli tan-nodi.
- Skjerament faċli tal-kodiċi.
- Sistema ta 'ġestjoni tal-kredenzjali tajba ħafna.
- Flessibilità u versatilità.
- Appoġġ għal diversi lingwi ta 'programmar.
- Is-sistema tinftiehem fuq livell intuwittiv.
▍Dgħufijiet ta’ Jenkins
- Il-plugins jistgħu jkunu diffiċli biex jintużaw.
- Meta tuża Jenkins fi proġetti żgħar, il-ħin meħtieġ biex tikkonfiguraha lilek innifsek jista 'jkun kbir irraġonevoli.
- Nuqqas ta' informazzjoni analitika ġenerali dwar ktajjen CI/CD.
▍Qawwiet ta' GitLab CI/CD
- Integrazzjoni tajba ma 'Docker.
- Skalar sempliċi ta 'runners.
- Eżekuzzjoni parallela tal-kompiti li huma parti mill-istadji tal-pipeline CI/CD.
- L-użu tal-mudell tal-graff aċikliku dirett meta twaqqaf relazzjonijiet tal-kompiti.
- Livell għoli ta 'skalabbiltà minħabba l-possibbiltà ta' eżekuzzjoni parallela ta 'runners.
- Faċilità li żżid il-kompiti.
- Riżoluzzjoni sempliċi tal-kunflitt.
- Sistema ta 'sigurtà affidabbli.
▍Nuqqasijiet ta’ GitLab CI/CD
- Għal kull kompitu, għandek bżonn tiddeskrivi u ttella' / tniżżel artifacts.
- Ma tistax tittestja r-riżultati tal-fergħat li jingħaqdu qabel ma jkunu fil-fatt magħquda.
- Meta tiddeskrivi l-istadji tal-pipeline CI / CD, għadu mhux possibbli li jintgħażlu stadji individwali fihom.
Riżultati ta '
Kemm Jenkins kif ukoll GitLab CI/CD għandhom saħħiet u dgħufijiet. It-tweġiba għall-mistoqsija dwar x'għandek tagħżel tiddependi fuq il-ħtiġijiet u l-karatteristiċi ta 'proġett partikolari. Kull waħda mill-għodod CI/CD riveduti llum għandha ċerti karatteristiċi, għalkemm dawn l-għodod inħolqu biex isolvu l-istess problema. Fl-istess ħin, Jenkins hija għodda waħedha, u GitLab CI / CD hija parti minn pjattaforma mfassla biex tikkollabora fuq il-kodiċi.
Meta tagħżel sistema CI / CD, minbarra l-kapaċitajiet tagħha, ta 'min tqis l-ispejjeż li jistgħu jkunu assoċjati magħha, u x'inhuma eżattament l-inġiniera DevOps li jappoġġjaw il-proġett huma mdorrijin jaħdmu magħhom.
Liema għodod CI/CD tuża?
Sors: www.habr.com